Skip to content

Commit 1b80f7d

Browse files
committed
Add C++ Solution
1 parent 7fe393e commit 1b80f7d

File tree

6 files changed

+91
-0
lines changed

6 files changed

+91
-0
lines changed

Problems/.DS_Store

0 Bytes
Binary file not shown.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Solution {
2+
public:
3+
int solve(int k, int n, vector<int>& dp)
4+
{
5+
if (k == 1) return n;
6+
if (dp[n] != 0) return dp[n];
7+
for (int i = 1; i <= n; i++)
8+
{
9+
int tmp = 1 + max(solve(k-1, i-1, dp), solve(k, n-i, dp));
10+
if (dp[n] == 0) dp[n] = tmp;
11+
else dp[n] = min(dp[n], tmp);
12+
}
13+
return dp[n];
14+
}
15+
16+
int twoEggDrop(int n) {
17+
vector<int> dp(n+1, 0);
18+
return solve(2, n, dp);
19+
}
20+
};
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class Solution {
2+
public:
3+
int numSplits(string s) {
4+
int n = s.length();
5+
vector<int> right(n+1, 0);
6+
7+
unordered_set<char> ss;
8+
for (int i = n-1; i >= 0; i--)
9+
{
10+
ss.insert(s[i]);
11+
right[i] = ss.size();
12+
}
13+
14+
ss.clear();
15+
int ans = 0;
16+
for (int i = 0; i < n; i++)
17+
{
18+
ss.insert(s[i]);
19+
if (ss.size() == right[i+1]) ans++;
20+
}
21+
return ans;
22+
}
23+
};
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
class Solution {
2+
public:
3+
int minSideJumps(vector<int>& obstacles) {
4+
int n = obstacles.size();
5+
vector<vector<int>> dp(n, vector<int>(3,0));
6+
dp[0][0] = dp[0][2] = 1;
7+
8+
for (int i = 1; i < n; i++)
9+
{
10+
for (int j = 0; j < 3; j++)
11+
{
12+
dp[i][j] = INT_MAX-1;
13+
if (obstacles[i] - 1 == j) continue;
14+
15+
if (obstacles[i-1] -1 != j) dp[i][j] = min(dp[i][j], dp[i-1][j]);
16+
17+
int lane = (j+1) % 3;
18+
if (obstacles[i-1] -1 != lane && obstacles[i] -1 != lane) dp[i][j] = min(dp[i][j], dp[i-1][lane]+1);
19+
20+
lane = (j+2) % 3;
21+
if (obstacles[i-1] -1 != lane && obstacles[i] -1 != lane) dp[i][j] = min(dp[i][j], dp[i-1][lane]+1);
22+
}
23+
}
24+
25+
int ans = INT_MAX;
26+
for (int j = 0; j < 3; j++) ans = min(ans, dp[n-1][j]);
27+
return ans;
28+
}
29+
};
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution {
2+
public:
3+
int deleteAndEarn(vector<int>& nums) {
4+
unordered_map<int, int> m;
5+
for (auto x: nums) m[x]++;
6+
7+
vector<int> dp(10001, 0);
8+
dp[1] = m[1];
9+
for (int i = 2; i <= 10000; i++)
10+
{
11+
dp[i] = max(dp[i-2] + i * m[i], dp[i-1]);
12+
}
13+
return dp[10000];
14+
}
15+
};

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ Solutions in various programming languages are provided. Enjoy it.
3333
25. 2023/02/16 [#926 Flip String to Monotone Increasing](https://github.com/LeetcodeRush/Leetcode/tree/main/Problems/25-Flip-String-to-Monotone-Increasing): DP
3434
26. 2023/02/17 [#935 Knight Dialer](https://github.com/LeetcodeRush/Leetcode/tree/main/Problems/26-Knight-Dialer): DP
3535
27. 2023/02/18 [#1664 Ways to Make a Fair Array](https://github.com/LeetcodeRush/Leetcode/tree/main/Problems/27-Ways-to-Make-a-Fair-Array): DP
36+
28. 2023/02/19 [#1884 Egg Drop With 2 Eggs and N Floors](): DP
37+
29. 2023/02/20 [#1525 Number of Good Ways to Split a String](): DP
38+
30. 2023/02/21 [#1824 Minimum Sideway Jumps](): DP
39+
31. 2023/02/22 [#740 Delete and Earn](): DP
3640

3741
## Weekly Contest
3842

0 commit comments

Comments
 (0)