Skip to content

Commit 6ead94e

Browse files
authored
Problem Difficulty Level: Medium
1 parent 97b5dac commit 6ead94e

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
/*--------------------------------
2+
Method: Memoization
3+
Time Complexity: O(n)
4+
Space Complexity: O(n) + O(n)
5+
----------------------------------*/
6+
7+
func solveQuestion(questions [][]int, i int, dp []int64) int64 {
8+
if i >= len(questions) {
9+
return 0;
10+
}
11+
12+
if dp[i] != -1 {
13+
return dp[i];
14+
}
15+
16+
Pick := int64(questions[i][0]) + solveQuestion(questions, i + questions[i][1] + 1, dp);
17+
noPick := solveQuestion(questions, i + 1, dp);
18+
dp[i] = max(Pick, noPick);
19+
return dp[i];
20+
}
21+
22+
func mostPoints(questions [][]int) int64 {
23+
numQuestions := len(questions);
24+
dp := make([]int64, numQuestions);
25+
for i := range dp {
26+
dp[i] = -1;
27+
}
28+
return solveQuestion(questions, 0, dp);
29+
}
30+
31+
/*---------------------------
32+
Method: Tabulation
33+
Time Complexity: O(n)
34+
Space Complexity: O(n)
35+
----------------------------*/
36+
37+
func mostPoints(questions [][]int) int64 {
38+
numQuestions := len(questions);
39+
dp := make([]int64, numQuestions + 1);
40+
for i := range dp {
41+
dp[i] = -1;
42+
}
43+
dp[numQuestions] = 0;
44+
45+
for i := numQuestions - 1; i >= 0; i-- {
46+
Pick := int64(questions[i][0]);
47+
if i + questions[i][1] + 1 < numQuestions {
48+
Pick += dp[i + questions[i][1] + 1];
49+
}
50+
noPick := dp[i + 1];
51+
dp[i] = max(Pick, noPick);
52+
}
53+
return dp[0];
54+
}
55+
56+
/*
57+
Question Link: https://leetcode.com/problems/solving-questions-with-brainpower/description/
58+
Author: M.R.Naganathan
59+
*/

0 commit comments

Comments
 (0)