Skip to content

Commit 4ee5426

Browse files
committed
Add C++
1 parent 943974c commit 4ee5426

File tree

7 files changed

+149
-1
lines changed

7 files changed

+149
-1
lines changed

Problems/.DS_Store

4 KB
Binary file not shown.
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
class Solution {
2+
public:
3+
int maxSumAfterPartitioning(vector<int>& arr, int k) {
4+
int n = arr.size();
5+
vector<long long> dp(n+1, 0);
6+
dp[1] = arr[0];
7+
for (int i = 2; i <= n; i++)
8+
{
9+
long long maxValue = -1;
10+
for (int j = i-1; j >= max(0, i-k); j--)
11+
{
12+
if (arr[j] > maxValue) maxValue = arr[j];
13+
long long cur = maxValue * (i - j) + dp[j];
14+
if ( cur > dp[i])
15+
{
16+
dp[i] = cur;
17+
}
18+
}
19+
}
20+
return dp[n];
21+
}
22+
};
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
class Solution {
2+
public:
3+
vector<int> findBall(vector<vector<int>>& grid) {
4+
int m = grid.size();
5+
int n = grid[0].size();
6+
7+
vector<vector<int>> dp(m+1, vector<int>(n, -1));
8+
for (int j = 0; j < n; j++) dp[m][j] = j;
9+
10+
for (int i = m-1; i >= 0; i--)
11+
{
12+
for (int j = n-1; j >= 0; j--)
13+
{
14+
if (j != n-1 and grid[i][j+1] == -1 and grid[i][j] == -1)
15+
{
16+
dp[i][j+1] = dp[i+1][j];
17+
}
18+
else if (j != 0 and grid[i][j-1] == 1 and grid[i][j] == 1)
19+
{
20+
dp[i][j-1] = dp[i+1][j];
21+
}
22+
}
23+
}
24+
25+
vector<int> ans(n, 0);
26+
for (int j = 0; j < n; j++) ans[j] = dp[0][j];
27+
return ans;
28+
}
29+
};
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Solution {
2+
public:
3+
int minFlipsMonoIncr(string s) {
4+
int n = s.length();
5+
vector<int> accZero(n+1, 0);
6+
for (int i = n-1; i>= 0; i--)
7+
{
8+
accZero[i] = accZero[i+1];
9+
if (s[i] == '0') accZero[i]++;
10+
}
11+
12+
int ans = accZero[0];
13+
int numOne = 0;
14+
for (int i = 0; i < n ; i++)
15+
{
16+
if (s[i] == '1') numOne++;
17+
ans = min(ans, (numOne + accZero[i+1]));
18+
}
19+
return ans;
20+
}
21+
};
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
class Solution {
2+
public:
3+
int knightDialer(int n) {
4+
const int M = 1000000007;
5+
vector<vector<int>> dp(10, vector<int>(n+1, 0));
6+
for (int i = 0; i < 10; i++) dp[i][0] = 1;
7+
8+
for (int j = 1; j < n; j++)
9+
{
10+
dp[1][j] = (dp[6][j-1] + dp[8][j-1]) % M;
11+
dp[2][j] = (dp[7][j-1] + dp[9][j-1]) % M;
12+
dp[3][j] = (dp[4][j-1] + dp[8][j-1]) % M;
13+
dp[4][j] = ((dp[3][j-1] + dp[9][j-1]) % M + dp[0][j-1]) % M;
14+
dp[5][j] = 0;
15+
dp[6][j] = ((dp[1][j-1] + dp[7][j-1]) % M + dp[0][j-1]) % M;
16+
dp[7][j] = (dp[2][j-1] + dp[6][j-1]) % M;
17+
dp[8][j] = (dp[1][j-1] + dp[3][j-1]) % M;
18+
dp[9][j] = (dp[2][j-1] + dp[4][j-1]) % M;
19+
dp[0][j] = (dp[4][j-1] + dp[6][j-1]) % M;
20+
}
21+
int ans = 0;
22+
for (int i = 0; i < 10; i++) ans = (ans + dp[i][n-1]) % M;
23+
return ans;
24+
}
25+
};
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
class Solution {
2+
public:
3+
int waysToMakeFair(vector<int>& nums) {
4+
int n = nums.size();
5+
if (n == 1) return 1;
6+
7+
vector<int> v(n, 0);
8+
v[0] = nums[0];
9+
v[1] = nums[1];
10+
11+
for (int i = 2; i < n; i++)
12+
{
13+
v[i] = v[i-2] + nums[i];
14+
}
15+
16+
int lastEven = (n % 2 == 0)?(n-2):(n-1);
17+
int lastOdd = (n % 2 == 1)?(n-2):(n-1);
18+
19+
int ans = 0;
20+
for (int i = 0; i < n; i++)
21+
{
22+
if (i == 0)
23+
{
24+
if (v[lastEven] - v[0] == v[lastOdd]) ans++;
25+
}
26+
else if (i == 1)
27+
{
28+
if (v[0] + v[lastOdd] - v[1] == v[lastEven] - v[0]) ans++;
29+
}
30+
else
31+
if (i % 2 == 0)
32+
{
33+
auto sumEven = v[i-2] + v[lastOdd] - v[i-1];
34+
auto sumOdd = v[i-1] + v[lastEven] - v[i];
35+
if (sumEven == sumOdd) ans++;
36+
}
37+
else
38+
{
39+
auto sumEven = v[i-1] + v[lastOdd] - v[i];
40+
auto sumOdd = v[i-2] + v[lastEven] - v[i-1];
41+
if (sumEven == sumOdd) ans++;
42+
43+
}
44+
}
45+
return ans;
46+
}
47+
};

README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,11 @@ Solutions in various programming languages are provided. Enjoy it.
2828
20. 2023/02/11 [#2405 Optimal Partition of String](https://github.com/LeetcodeRush/Leetcode/tree/main/Problems/20-Optimal-Partition-of-String): Greedy
2929
21. 2023/02/12 [#1529 Minimum Suffix Flips](https://github.com/LeetcodeRush/Leetcode/tree/main/Problems/21-Minimum-Suffix-Flips): Greedy
3030
22. 2023/02/13 [#1768 Merge Strings Alternately](https://github.com/LeetcodeRush/Leetcode/tree/main/Problems/22-Merge-Strings-Alternately): String
31-
31+
23. 2023/02/14 [#1043 Partition Array for Maximum Sum](): DP
32+
24. 2023/02/15 [#1706 Where Will the Ball Fall](): DP
33+
25. 2023/02/16 [#926 Flip String to Monotone Increasing](): DP
34+
26. 2023/02/17 [#935 Knight Dialer](): DP
35+
27. 2023/02/18 [#1664 Ways to Make a Fair Array](): DP
3236

3337
## Weekly Contest
3438

0 commit comments

Comments
 (0)