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.
6767class Solution {
6868public:
6969 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);
7272 for (int i = 0; i < N; ++i) {
73- int next = i + A[ i] [ 1 ] + 2;
74- if (next > N) next = N + 1;
7573 dp[ i + 1] = max(dp[ i + 1] , dp[ i] );
74+ int next = min(i + A[ i] [ 1 ] + 2, N + 1);
7675 dp[ next] = max(dp[ next] , dp[ i + 1] + A[ i] [ 0 ] );
7776 }
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];
79100 }
80101};
81102```
You can’t perform that action at this time.
0 commit comments