File tree Expand file tree Collapse file tree 1 file changed +26
-5
lines changed
leetcode/2140. Solving Questions With Brainpower Expand file tree Collapse file tree 1 file changed +26
-5
lines changed Original file line number Diff line number Diff line change @@ -67,15 +67,36 @@ Total points earned: 2 + 5 = 7. There is no other way to earn 7 or more points.
67
67
class Solution {
68
68
public:
69
69
long long mostPoints(vector<vector<int >>& A) {
70
- long long N = A.size();
71
- vector<long long > dp(N + 2);
70
+ int N = A.size();
71
+ vector<long > dp(N + 2);
72
72
for (int i = 0; i < N; ++i) {
73
- int next = i + A[ i] [ 1 ] + 2;
74
- if (next > N) next = N + 1;
75
73
dp[ i + 1] = max(dp[ i + 1] , dp[ i] );
74
+ int next = min(i + A[ i] [ 1 ] + 2, N + 1);
76
75
dp[ next] = max(dp[ next] , dp[ i + 1] + A[ i] [ 0 ] );
77
76
}
78
- return * max_element(begin(dp), end(dp));
77
+ return dp[ N + 1] ;
78
+ }
79
+ };
80
+ ```
81
+
82
+ Or
83
+
84
+ ```cpp
85
+ // OJ: https://leetcode.com/problems/solving-questions-with-brainpower/
86
+ // Author: github.com/lzl124631x
87
+ // Time: O(N)
88
+ // Space: O(N)
89
+ class Solution {
90
+ public:
91
+ long long mostPoints(vector<vector<int>>& A) {
92
+ int N = A.size();
93
+ vector<long> dp(N + 1);
94
+ for (int i = N - 1; i >= 0; --i) {
95
+ dp[i] = max(dp[i], dp[i + 1]);
96
+ int next = min(i + A[i][1] + 1, N);
97
+ dp[i] = max(dp[i], dp[next] + A[i][0]);
98
+ }
99
+ return dp[0];
79
100
}
80
101
};
81
102
```
You can’t perform that action at this time.
0 commit comments