Skip to content

Commit cd1d8e4

Browse files
committed
6 problems solved.
1 parent 1543f0c commit cd1d8e4

File tree

6 files changed

+174
-0
lines changed

6 files changed

+174
-0
lines changed

src/1161.cpp

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
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+
}

src/1370.cpp

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
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+
}

src/1374.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
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+
}

src/701.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
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+
}

src/914.cpp

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
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+
}

src/941.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
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+
}

0 commit comments

Comments
 (0)