Skip to content

Commit 408c730

Browse files
committed
5 problems solved.
1 parent 34f56dd commit 408c730

File tree

5 files changed

+113
-0
lines changed

5 files changed

+113
-0
lines changed

src/1237.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
vector<vector<int>> findSolution(CustomFunction& customfunction, int z) {
2+
vector<vector<int>> res;
3+
int limity = 1000;
4+
for (int i = 1; i <= 1000; ++i)
5+
{
6+
int p = 1, q = limity;
7+
while (p <= q)
8+
{
9+
int mid = (p+q)/2;
10+
int tmp = customfunction.f(i, mid);
11+
if (tmp == z)
12+
{
13+
res.push_back({i, mid});
14+
limity = mid;
15+
break;
16+
}
17+
else if (tmp < z)
18+
p = mid+1;
19+
else
20+
q = mid-1;
21+
}
22+
}
23+
24+
return res;
25+
}

src/1298.cpp

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
int maxCandies(vector<int>& status, vector<int>& candies, vector<vector<int>>& keys, vector<vector<int>>& containedBoxes, vector<int>& initialBoxes) {
2+
int sum = 0;
3+
int len = status.size();
4+
vector<int> flag(len, 0);
5+
6+
deque<int> dq(initialBoxes.begin(), initialBoxes.end());
7+
int sz = dq.size();
8+
while (sz > 0)
9+
{
10+
int i = 0;
11+
for (i = 0; i < sz; ++i)
12+
if (status[dq[i]] == 1 && flag[dq[i]] == 0)
13+
break;
14+
if (i == sz)
15+
break;
16+
17+
int n = dq[i];
18+
dq.erase(dq.begin()+i);
19+
20+
flag[n] = 1;
21+
sum += candies[n];
22+
23+
int l = keys[n].size();
24+
for (int j = 0; j < l; ++j)
25+
status[keys[n][j]] = 1;
26+
l = containedBoxes[n].size();
27+
for (int j = 0; j < l; ++j)
28+
dq.push_back(containedBoxes[n][j]);
29+
sz = dq.size();
30+
}
31+
32+
return sum;
33+
}

src/1304.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
vector<int> sumZero(int n) {
2+
vector<int> res(n, 0);
3+
if (n%2 == 0)
4+
{
5+
for (int i = 0; i < n/2; ++i)
6+
{
7+
res[i] = i+1;
8+
res[n-1-i] = -(i+1);
9+
}
10+
}
11+
else
12+
{
13+
res[n/2] = 0;
14+
for (int i = 0; i < n/2; ++i)
15+
{
16+
res[i] = i+1;
17+
res[n-1-i] = -(i+1);
18+
}
19+
}
20+
21+
return res;
22+
}

src/1305.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
vector<int> getAllElements(TreeNode* root1, TreeNode* root2) {
2+
vector<int> res;
3+
midtravel(root1, res);
4+
midtravel(root2, res);
5+
6+
sort(res.begin(), res.end());
7+
8+
return move(res);
9+
}
10+
11+
void midtravel(TreeNode* node, vector<int>& vec)
12+
{
13+
if (node != nullptr)
14+
{
15+
midtravel(node->left, vec);
16+
vec.push_back(node->val);
17+
midtravel(node->right, vec);
18+
}
19+
}

src/965.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
bool isUnivalTree(TreeNode* root) {
2+
if (root == nullptr)
3+
return true;
4+
return isUnivalSubTree(root->left, root->val) && isUnivalSubTree(root->right, root->val);
5+
}
6+
7+
bool isUnivalSubTree(TreeNode* node, int key)
8+
{
9+
if (node == nullptr)
10+
return true;
11+
if (node->val != key)
12+
return false;
13+
return isUnivalSubTree(node->left, key) && isUnivalSubTree(node->right, key);
14+
}

0 commit comments

Comments
 (0)