File tree Expand file tree Collapse file tree 6 files changed +174
-0
lines changed Expand file tree Collapse file tree 6 files changed +174
-0
lines changed Original file line number Diff line number Diff line change
1
+ int maxLevelSum (TreeNode* root) {
2
+ if (root == nullptr )
3
+ return 1 ;
4
+ if (root->left == nullptr && root->right == nullptr )
5
+ return 1 ;
6
+
7
+ deque<TreeNode*> dq;
8
+ dq.push_back (root);
9
+ int len = 1 ;
10
+ int maxval = root->val ;
11
+ int level = 1 ;
12
+ int ct = 0 ;
13
+ while (len != 0 )
14
+ {
15
+ ++ct;
16
+ int sum = 0 ;
17
+ for (int i = 0 ; i < len; ++i)
18
+ {
19
+ TreeNode* node = dq[i];
20
+ sum += node->val ;
21
+ if (node->left != nullptr )
22
+ dq.push_back (node->left );
23
+ if (node->right != nullptr )
24
+ dq.push_back (node->right );
25
+ }
26
+
27
+ if (sum > maxval)
28
+ {
29
+ maxval = sum;
30
+ level = ct;
31
+ }
32
+ dq.erase (dq.begin (), dq.begin ()+len);
33
+ len = dq.size ();
34
+ }
35
+
36
+ return level;
37
+ }
Original file line number Diff line number Diff line change
1
+ string sortString (string s) {
2
+ int len = s.size ();
3
+ if (len == 1 )
4
+ return s;
5
+
6
+ vector<int > num (26 , 0 );
7
+ for (int i = 0 ; i < len; ++i)
8
+ num[s[i]-' a' ]++;
9
+ int k = 0 ;
10
+ string res (len, ' ' );
11
+ while (k < len)
12
+ {
13
+ for (int i = 0 ; i < 26 ; ++i)
14
+ {
15
+ if (num[i] > 0 )
16
+ {
17
+ res[k++] = ' a' +i;
18
+ --num[i];
19
+ }
20
+ }
21
+
22
+ if (k == len)
23
+ break ;
24
+ for (int i = 25 ; i >= 0 ; --i)
25
+ {
26
+ if (num[i] > 0 )
27
+ {
28
+ res[k++] = ' a' +i;
29
+ --num[i];
30
+ }
31
+ }
32
+ }
33
+
34
+ return res;
35
+ }
Original file line number Diff line number Diff line change
1
+ string generateTheString (int n) {
2
+ if (n == 1 )
3
+ return " a" ;
4
+ else if (n%2 == 0 )
5
+ return string (1 , ' a' ) + string (n-1 , ' b' );
6
+ else
7
+ return string (n, ' a' );
8
+ }
Original file line number Diff line number Diff line change
1
+ TreeNode* insertIntoBST (TreeNode* root, int val) {
2
+ if (root == nullptr )
3
+ {
4
+ TreeNode* node = new TreeNode (val);
5
+ return node;
6
+ }
7
+ else if (val < root->val )
8
+ root->left = insertIntoBST (root->left , val);
9
+ else
10
+ root->right = insertIntoBST (root->right , val);
11
+
12
+ return root;
13
+ }
Original file line number Diff line number Diff line change
1
+ bool hasGroupsSizeX (vector<int >& deck) {
2
+ int len = deck.size ();
3
+ if (len <= 1 )
4
+ return false ;
5
+ if (len == 2 )
6
+ return deck[0 ] == deck[1 ];
7
+
8
+ map<int ,int > mp;
9
+ for (int i = 0 ; i < len; ++i)
10
+ mp[deck[i]]++;
11
+
12
+ int sz = mp.size ();
13
+ if (sz == 1 )
14
+ return true ;
15
+ auto iter = mp.begin ();
16
+ int a = iter->second ;
17
+ ++iter;
18
+ int b = iter->second ;
19
+ ++iter;
20
+ int div = gcd (a, b);
21
+ if (div == 1 )
22
+ return false ;
23
+ for (; iter != mp.end (); ++iter)
24
+ {
25
+ div = gcd (iter->second , div);
26
+ if (div == 1 )
27
+ return false ;
28
+ }
29
+
30
+ return true ;
31
+ }
32
+
33
+ int gcd (int a, int b)
34
+ {
35
+ if (a > b)
36
+ {
37
+ int t = a;
38
+ a = b;
39
+ b = t;
40
+ }
41
+
42
+ while (a != 1 )
43
+ {
44
+ b %= a;
45
+ if (b == 0 )
46
+ break ;
47
+ if (a > b)
48
+ {
49
+ int t = a;
50
+ a = b;
51
+ b = t;
52
+ }
53
+ }
54
+
55
+ return a;
56
+ }
Original file line number Diff line number Diff line change
1
+ bool validMountainArray (vector<int >& A) {
2
+ int len = A.size ();
3
+ if (len < 3 )
4
+ return false ;
5
+
6
+ int i = 1 ;
7
+ for (i = 1 ; i < len; ++i)
8
+ {
9
+ if (A[i] == A[i-1 ])
10
+ return false ;
11
+ if (A[i] < A[i-1 ])
12
+ break ;
13
+ }
14
+ if (i == 1 || i == len)
15
+ return false ;
16
+ if (i == len-1 )
17
+ return true ;
18
+ for (; i < len-1 ; ++i)
19
+ {
20
+ if (A[i] <= A[i+1 ])
21
+ return false ;
22
+ }
23
+
24
+ return true ;
25
+ }
You can’t perform that action at this time.
0 commit comments