Skip to content

Commit 3028f46

Browse files
committed
7 problems solved.
1 parent e6f47f7 commit 3028f46

File tree

7 files changed

+181
-0
lines changed

7 files changed

+181
-0
lines changed

src/1022.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
int sumRootToLeaf(TreeNode* root) {
2+
if (root == nullptr)
3+
return 0;
4+
5+
int res = 0;
6+
int sum = 0;
7+
search(root, res, sum);
8+
9+
return sum;
10+
}
11+
12+
void search(TreeNode* node, int res, int& sum)
13+
{
14+
res = res*2 + node->val;
15+
if (node->left != nullptr || node->right != nullptr)
16+
{
17+
if (node->left != nullptr)
18+
search(node->left, res, sum);
19+
if (node->right != nullptr)
20+
search(node->right, res, sum);
21+
}
22+
else
23+
{
24+
sum += res;
25+
}
26+
}

src/1291.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
vector<int> sequentialDigits(int low, int high) {
2+
vector<vector<int>> nums{{12,23,34,45,56,67,78,89},{123,234,345,456,567,678,789},{1234,2345,3456,4567,5678,6789},
3+
{12345,23456,34567,45678,56789},{123456,234567,345678,456789},{1234567,2345678,3456789},{12345678,23456789},
4+
{123456789}};
5+
6+
vector<int> res;
7+
for (int i = 0; i < 8; ++i)
8+
{
9+
int sz = nums[i].size();
10+
for (int j = 0; j < sz; ++j)
11+
if (nums[i][j] >= low && nums[i][j] <= high)
12+
res.push_back(nums[i][j]);
13+
}
14+
15+
return res;
16+
}

src/1296.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
bool isPossibleDivide(vector<int>& nums, int k) {
2+
int len = nums.size();
3+
if (len%k != 0)
4+
return false;
5+
6+
map<int, int> mp;
7+
for (int i = 0; i < len; ++i)
8+
mp[nums[i]]++;
9+
10+
for (auto iter = mp.begin(); iter != mp.end(); ++iter)
11+
{
12+
if (iter->second == 0)
13+
continue;
14+
int t = iter->first;
15+
for (int i = t+1; i < t+k; ++i)
16+
{
17+
if (mp[i] < iter->second)
18+
return false;
19+
else
20+
mp[i] -= iter->second;
21+
}
22+
}
23+
24+
return true;
25+
}

src/1346.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
bool checkIfExist(vector<int>& arr) {
2+
int len = arr.size();
3+
for (int i = 0; i < len-1; ++i)
4+
{
5+
for (int j = i+1; j < len; ++j)
6+
{
7+
if (arr[i]*2 == arr[j] || arr[i] == arr[j]*2)
8+
return true;
9+
}
10+
}
11+
12+
return false;
13+
}

src/1347.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
int minSteps(string s, string t) {
2+
vector<int> ct1(26, 0);
3+
vector<int> ct2(26, 0);
4+
int len = s.size();
5+
for (int i = 0; i < len; ++i)
6+
{
7+
ct1[s[i]-'a']++;
8+
ct2[t[i]-'a']++;
9+
}
10+
11+
for (int i = 0; i < 26; ++i)
12+
{
13+
if (ct1[i] > 0 && ct2[i] > 0)
14+
len -= min(ct1[i], ct2[i]);
15+
}
16+
17+
return len;
18+
}

src/1348.cpp

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
class TweetCounts {
2+
public:
3+
TweetCounts() {
4+
}
5+
6+
void recordTweet(string tweetName, int time) {
7+
mp[tweetName].push_back(time);
8+
}
9+
10+
vector<int> getTweetCountsPerFrequency(string freq, string tweetName, int startTime, int endTime) {
11+
if (mp.find(tweetName) != mp.end())
12+
{
13+
int ct = 0;
14+
int interval = 0;
15+
if (freq == "minute")
16+
{
17+
ct = (endTime-startTime+60)/60;
18+
interval = 60;
19+
}
20+
else if (freq == "hour")
21+
{
22+
ct = (endTime-startTime+3600)/3600;
23+
interval = 3600;
24+
}
25+
else
26+
{
27+
ct = (endTime-startTime+86400)/86400;
28+
interval = 86400;
29+
}
30+
vector<int> res(ct, 0);
31+
int len = mp[tweetName].size();
32+
for (int i = 0; i < len; ++i)
33+
{
34+
if (mp[tweetName][i] < startTime || mp[tweetName][i] >= endTime+1)
35+
continue;
36+
res[(mp[tweetName][i]-startTime)/interval]++;
37+
}
38+
39+
return res;
40+
}
41+
else
42+
return {};
43+
}
44+
private:
45+
map<string, vector<int>> mp;
46+
};

src/15.cpp

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
vector<vector<int>> threeSum(vector<int>& nums) {
2+
vector<vector<int>> res;
3+
int len = nums.size();
4+
if (len < 3)
5+
return res;
6+
7+
sort(nums.begin(), nums.end());
8+
int i = 0, j = 0;
9+
while (i < len-2)
10+
{
11+
if (nums[i] > 0)
12+
break;
13+
j = i+1;
14+
while (j < len-1)
15+
{
16+
if (nums[i]+nums[j] > 0)
17+
{
18+
break;
19+
}
20+
bool ans = binary_search(nums.begin()+j+1, nums.end(), -nums[i]-nums[j]);
21+
if (ans)
22+
res.push_back({nums[i], nums[j], -nums[i]-nums[j]});
23+
auto iter = upper_bound(nums.begin()+j+1, nums.end(), nums[j]);
24+
if (iter == nums.end())
25+
break;
26+
j = iter-nums.begin();
27+
}
28+
29+
auto iter2 = upper_bound(nums.begin()+i+1, nums.end(), nums[i]);
30+
if (iter2 == nums.end())
31+
break;
32+
else
33+
i = iter2-nums.begin();
34+
}
35+
36+
return res;
37+
}

0 commit comments

Comments
 (0)