File tree Expand file tree Collapse file tree 5 files changed +168
-0
lines changed Expand file tree Collapse file tree 5 files changed +168
-0
lines changed Original file line number Diff line number Diff line change
1
+ int deepestLeavesSum (TreeNode* root) {
2
+ deque<TreeNode*> dq;
3
+ dq.push_back (root);
4
+ int len = 1 ;
5
+ int sum = 0 ;
6
+ while (len != 0 )
7
+ {
8
+ int subsum = 0 ;
9
+ for (int i = 0 ; i < len; ++i)
10
+ {
11
+ TreeNode* node = dq[i];
12
+ subsum += node->val ;
13
+ if (node->left != nullptr )
14
+ dq.push_back (node->left );
15
+ if (node->right != nullptr )
16
+ dq.push_back (node->right );
17
+ }
18
+ sum = subsum;
19
+ dq.erase (dq.begin (), dq.begin ()+len);
20
+ len = dq.size ();
21
+ }
22
+
23
+ return sum;
24
+ }
Original file line number Diff line number Diff line change
1
+ vector<vector<int >> diagonalSort (vector<vector<int >>& mat) {
2
+ int row = mat.size ();
3
+ int col = mat[0 ].size ();
4
+ if (row == 1 || col == 1 )
5
+ return mat;
6
+
7
+ int minval = row < col ? row : col;
8
+ vector<int > vec (minval);
9
+ for (int i = row-2 ; i >= 0 ; --i)
10
+ {
11
+ int k = row-i;
12
+ if (col < k)
13
+ k = col;
14
+ for (int j = 0 ; j < k; ++j)
15
+ vec[j] = mat[i+j][j];
16
+ sort (vec.begin (), vec.begin ()+k);
17
+ for (int j = 0 ; j < k; ++j)
18
+ mat[i+j][j] = vec[j];
19
+ }
20
+
21
+ for (int i = 1 ; i < col-1 ; ++i)
22
+ {
23
+ int k = col-i;
24
+ if (row < k)
25
+ k = row;
26
+ for (int j = 0 ; j < k; ++j)
27
+ vec[j] = mat[j][i+j];
28
+ sort (vec.begin (), vec.begin ()+k);
29
+ for (int j = 0 ; j < k; ++j)
30
+ mat[j][i+j] = vec[j];
31
+ }
32
+
33
+ return mat;
34
+ }
Original file line number Diff line number Diff line change
1
+ TreeNode* lowestCommonAncestor (TreeNode* root, TreeNode* p, TreeNode* q) {
2
+ if (root == p || root == q)
3
+ return root;
4
+ vector<TreeNode*> path;
5
+ TreeNode* node = root;
6
+ while (node != nullptr )
7
+ {
8
+ path.push_back (node);
9
+ if (node->val > p->val )
10
+ {
11
+ node = node->left ;
12
+ }
13
+ else if (node->val == p->val )
14
+ break ;
15
+ else
16
+ {
17
+ node = node->right ;
18
+ }
19
+ }
20
+
21
+ node = root;
22
+ int len = path.size ();
23
+ int i = 0 ;
24
+ while (i < len && node == path[i])
25
+ {
26
+ if (node == p || node == q)
27
+ return node;
28
+ node = node->val > q->val ? node->left : node->right ;
29
+ ++i;
30
+ }
31
+
32
+ return path[i-1 ];
33
+ }
Original file line number Diff line number Diff line change
1
+ int thirdMax (vector<int >& nums) {
2
+ int len = nums.size ();
3
+ if (len == 1 )
4
+ return nums[0 ];
5
+ if (len == 2 )
6
+ return nums[0 ] > nums[1 ] ? nums[0 ] : nums[1 ];
7
+ int arr[3 ] = {0 };
8
+ arr[0 ] = nums[0 ];
9
+ int ct = 1 ;
10
+ int i = 1 ;
11
+ while (i < len)
12
+ {
13
+ if (ct == 1 )
14
+ {
15
+ if (nums[i] != arr[0 ])
16
+ {
17
+ arr[1 ] = nums[i];
18
+ ++ct;
19
+ }
20
+ }
21
+ else if (ct == 2 )
22
+ {
23
+ if (nums[i] != arr[0 ] && nums[i] != arr[1 ])
24
+ {
25
+ arr[2 ] = nums[i];
26
+ ++ct;
27
+ sort (arr, arr+3 );
28
+ }
29
+ }
30
+ else
31
+ {
32
+ if (nums[i] > arr[0 ] && nums[i] < arr[1 ])
33
+ arr[0 ] = nums[i];
34
+ else if (nums[i] > arr[1 ] && nums[i] < arr[2 ])
35
+ {
36
+ arr[0 ] = arr[1 ];
37
+ arr[1 ] = nums[i];
38
+ }
39
+ else if (nums[i] > arr[2 ])
40
+ {
41
+ arr[0 ] = arr[1 ];
42
+ arr[1 ] = arr[2 ];
43
+ arr[2 ] = nums[i];
44
+ }
45
+ }
46
+ ++i;
47
+ }
48
+
49
+ if (ct == 1 )
50
+ return arr[0 ];
51
+ else if (ct == 2 )
52
+ return arr[0 ] > arr[1 ] ? arr[0 ] : arr[1 ];
53
+ else
54
+ return arr[0 ];
55
+ }
Original file line number Diff line number Diff line change
1
+ double findMaxAverage (vector<int >& nums, int k) {
2
+ int maxsum = INT_MIN;
3
+ int len = nums.size ();
4
+ if (len <= k-1 )
5
+ return 0 ;
6
+ int subsum = 0 ;
7
+ for (int i = 0 ; i < k; ++i)
8
+ subsum += nums[i];
9
+ if (subsum > maxsum)
10
+ maxsum = subsum;
11
+ int i = 0 , j = k;
12
+ while (j < len)
13
+ {
14
+ subsum = subsum - nums[i] + nums[j];
15
+ if (subsum > maxsum)
16
+ maxsum = subsum;
17
+ ++i;
18
+ ++j;
19
+ }
20
+
21
+ return (double )maxsum/k;
22
+ }
You can’t perform that action at this time.
0 commit comments