Member-only story
Leetcode 2140: Solving Questions With Brainpower
In this problem, we are trying to find a testing strategy to optimize the number of points in a test giving the following rules:
You are given a 0-indexed 2D integer array
questions
wherequestions[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 questioni
will earn youpointsi
points but you will be unable to solve each of the nextbrainpoweri
questions. If you skip questioni
, you get to make the decision on the next question.For example, given
questions = [[3, 2], [4, 3], [4, 4], [2, 5]]
:If question
0
is solved, you will earn3
points but you will be unable to solve questions1
and2
. If instead, question0
is skipped and question1
is solved, you will earn4
points but you will be unable to solve questions2
and3
.
Return the maximum points you can earn for the exam.
To solve this problem, I simply memoized the following result in a array r
. where r[i]
is the maximum number of points we can obtain if we start the test at index i
.
There are fundamentally 2 possibility for the value of r[i]
, if we decide to solve the problem i
and get the points, then the maximum number of points we will get will be pointsi + r[i + brainpoweri + 1]
(if i + brainpoweri + 1
is actually a valid index, 0
otherwise). The other possibility is not…