Solving Questions With Brainpower - Problem

You are given a 0-indexed 2D integer array questions where questions[i] = [pointsi, brainpoweri].

The array describes the questions of an exam, where you have to process the questions in order (i.e., starting from question 0) and make a decision whether to solve or skip each question. Solving question i will earn you pointsi points but you will be unable to solve each of the next brainpoweri questions. If you skip question i, you get to make the decision on the next question.

Example: Given questions = [[3, 2], [4, 3], [4, 4], [2, 5]]:

  • If question 0 is solved, you will earn 3 points but you will be unable to solve questions 1 and 2.
  • If instead, question 0 is skipped and question 1 is solved, you will earn 4 points but you will be unable to solve questions 2 and 3.

Return the maximum points you can earn for the exam.

Input & Output

Example 1 — Basic Decision Making
$ Input: questions = [[3,2],[4,3],[4,4],[2,5]]
Output: 5
💡 Note: Maximum points by solving question 0 (3 points, skip questions 1,2) then solving question 3 (2 points) for total 3+2=5 points.
Example 2 — All Skip vs Solve Dilemma
$ Input: questions = [[1,1],[2,2],[3,3],[4,4],[5,5]]
Output: 7
💡 Note: Optimal strategy: solve questions at indices 1 (2 points, skip question 2,3) and 4 (5 points) for total 2+5=7 points
Example 3 — Single Question
$ Input: questions = [[21,5]]
Output: 21
💡 Note: Only one question available, solve it for 21 points

Constraints

  • 1 ≤ questions.length ≤ 105
  • questions[i].length == 2
  • 1 ≤ pointsi, brainpoweri ≤ 105

Visualization

Tap to expand
Solving Questions With Brainpower INPUT questions array (2D) Q0 [3, 2] pts=3, skip=2 Q1 [4, 3] pts=4, skip=3 Q2 [4, 4] pts=4, skip=4 Q3 [2, 5] pts=2, skip=5 For each question: SOLVE: gain points, skip next SKIP: move to next question Input: [[3,2],[4,3],[4,4],[2,5]] ALGORITHM (DP) 1 Initialize DP dp[i] = max points from i to end 2 Iterate Backwards From last question to first 3 Choose Max solve vs skip for each 4 Return dp[0] Max from question 0 DP Table (right to left): i=3 i=2 i=1 i=0 2 4 4 7 dp[i] = max(skip, solve) = max(dp[i+1], pts + dp[i+skip+1]) dp[0] = max(4, 3+4) = 7 FINAL RESULT Optimal Strategy: Q0: SOLVE +3 pts Q1,Q2: SKIP Q3: SOLVE +4 pts Solving Q0: skip next 2 (Q1,Q2) Then solve Q3: earn 4 points Maximum Points: 7 OK - Verified! 3 + 4 = 7 points Key Insight: Use backward DP: dp[i] = maximum points achievable from question i to the end. At each question, choose the better option: SKIP (dp[i+1]) or SOLVE (points[i] + dp[i+skip+1]). Time: O(n), Space: O(n) where n = number of questions TutorialsPoint - Solving Questions With Brainpower | Dynamic Programming (Backward DP)
Asked in
Google 15 Amazon 12 Meta 8 Microsoft 6
23.4K Views
Medium Frequency
~25 min Avg. Time
892 Likes
Ln 1, Col 1
Smart Actions
💡 Explanation
AI Ready
💡 Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen