Skip to content

Commit f9c7b9d

Browse files
committed
5 problems solved.
1 parent cd1d8e4 commit f9c7b9d

File tree

5 files changed

+175
-0
lines changed

5 files changed

+175
-0
lines changed

src/1008.cpp

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
TreeNode* bstFromPreorder(vector<int>& preorder) {
2+
int len = preorder.size();
3+
if (len == 0)
4+
return nullptr;
5+
if (len == 1)
6+
return new TreeNode(preorder[0]);
7+
8+
return search(preorder, 0, len-1);
9+
}
10+
11+
TreeNode* search(vector<int>& vec, int p, int q)
12+
{
13+
if (p > q)
14+
return nullptr;
15+
if (p == q)
16+
return new TreeNode(vec[p]);
17+
TreeNode* node = new TreeNode(vec[p]);
18+
int i = 0;
19+
for (i = p+1; i <= q; ++i)
20+
{
21+
if (vec[i] > vec[p])
22+
break;
23+
}
24+
25+
if (vec[p+1] < vec[p])
26+
node->left = search(vec, p+1, i-1);
27+
if (i <= q)
28+
node->right = search(vec, i, q);
29+
30+
return node;
31+
}

src/1380.cpp

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
vector<int> luckyNumbers (vector<vector<int>>& matrix) {
2+
int row = matrix.size();
3+
int col = matrix[0].size();
4+
5+
vector<int> res;
6+
for (int i = 0; i < row; ++i)
7+
{
8+
int minval = matrix[i][0];
9+
int index = 0;
10+
int j = 0;
11+
for (j = 1; j < col; ++j)
12+
{
13+
if (matrix[i][j] < minval)
14+
{
15+
index = j;
16+
minval = matrix[i][j];
17+
}
18+
}
19+
20+
bool flag = true;
21+
for (j = 0; j < row; ++j)
22+
{
23+
if (matrix[j][index] > minval)
24+
{
25+
flag = false;
26+
break;
27+
}
28+
}
29+
30+
if (flag)
31+
res.push_back(minval);
32+
}
33+
34+
return res;
35+
}

src/501.cpp

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
vector<int> findMode(TreeNode* root) {
2+
if (root == nullptr)
3+
return {};
4+
if (root->left == nullptr && root->right == nullptr)
5+
return {root->val};
6+
7+
map<int, int> mp;
8+
mp[root->val] = 1;
9+
if (root->left != nullptr)
10+
search(root->left, mp);
11+
if (root->right != nullptr)
12+
search(root->right, mp);
13+
int m = 0;
14+
for (auto iter = mp.begin(); iter != mp.end(); ++iter)
15+
{
16+
if (iter->second > m)
17+
m = iter->second;
18+
}
19+
20+
vector<int> res;
21+
for (auto iter = mp.begin(); iter != mp.end(); ++iter)
22+
{
23+
if (iter->second == m)
24+
res.push_back(iter->first);
25+
}
26+
27+
return res;
28+
}
29+
30+
void search(TreeNode* node, map<int, int>& mp)
31+
{
32+
mp[node->val]++;
33+
if (node->left != nullptr)
34+
search(node->left, mp);
35+
if (node->right != nullptr)
36+
search(node->right, mp);
37+
}

src/680.cpp

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
bool validPalindrome(string s) {
2+
int len = s.size();
3+
if (len <= 2)
4+
return true;
5+
6+
return search(s, 0, len-1, false);
7+
}
8+
9+
bool search(const string& s, int p, int q, bool flag)
10+
{
11+
if (p >= q)
12+
return true;
13+
if (flag)
14+
{
15+
while (p < q)
16+
{
17+
if (s[p] != s[q])
18+
return false;
19+
else
20+
{
21+
++p;
22+
--q;
23+
}
24+
}
25+
26+
return true;
27+
}
28+
else
29+
{
30+
if (s[p] == s[q])
31+
{
32+
return search(s, p+1, q-1, false) || search(s, p+1, q, true)
33+
|| search(s, p, q-1, true);
34+
}
35+
else
36+
return search(s, p+1, q, true) || search(s, p, q-1, true);
37+
}
38+
}

src/868.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
int binaryGap(int N) {
2+
int index[2] = {-1,-1};
3+
int ct = 0;
4+
int i = 0, maxdist = 0;
5+
while (N != 0)
6+
{
7+
if (N%2 == 1)
8+
{
9+
if (ct < 2)
10+
{
11+
index[ct++] = i;
12+
}
13+
else
14+
{
15+
int t = index[1] - index[0];
16+
if (t > maxdist)
17+
maxdist = t;
18+
index[0] = index[1];
19+
index[1] = i;
20+
}
21+
}
22+
N /= 2;
23+
++i;
24+
}
25+
if (ct < 2)
26+
return 0;
27+
else
28+
{
29+
int t = index[1] - index[0];
30+
if (t > maxdist)
31+
maxdist = t;
32+
return maxdist;
33+
}
34+
}

0 commit comments

Comments
 (0)