這道題其實和 leetcode—198.打家劫舍 是一樣的,典型的dp問題,dp[i]表示在第 i 個請求到來後的總預約時間。我們對於第 i 個預約請求有兩種選擇(接和不接),接的話則表示他是從第 i-2 個請求過來的(因為不能接相鄰的請求),不接的話其總預約時間不變(和dp[i-1]相同)。所以狀態轉移方程為dp(
i)=m
ax(d
p(i−
1),d
p(i−
2)+n
um(i
))dp(i)=max(dp(i-1),dp(i-2)+num(i))
dp(i)=
max(
dp(i
−1),
dp(i
−2)+
num(i))
int
massage
(vector<
int>
& nums)
; dp[0]
= nums[0]
; dp[1]
=max
(nums[1]
,dp[0]
);for(
int i =
2;i < n;i++
)return dp[n-1]
;}
以上**我們可以在空間上優化,我們每次只關心 dp[
i−1]
,dp[
i−2]
,dp[
i]dp[i-1],dp[i-2],dp[i]
dp[i−1
],dp
[i−2
],dp
[i] 這個值,所以我們只需要三個變數即可,而不需要乙個dp陣列。
int
massage
(vector<
int>
& nums)
return c;
}
leetcode 面試題17 16 按摩師
乙個有名的按摩師會收到源源不斷的預約請求,每個預約都可以選擇接或不接。在每次預約服務之間要有休息時間,因此她不能接受相鄰的預約。給定乙個預約請求序列,替按摩師找到最優的預約集合 總預約時間最長 返回總的分鐘數。注意 本題相對原題稍作改動 示例 1 輸入 1,2,3,1 輸出 4 解釋 選擇 1 號預...
LeetCode動態規劃 面試題17 16按摩師
乙個有名的按摩師會收到源源不斷的預約請求,每個預約都可以選擇接或不接。在每次預約服務之間要有休息時間,因此她不能接受相鄰的預約。給定乙個預約請求序列,替按摩師找到最優的預約集合 總預約時間最長 返回總的分鐘數。注意 本題相對原題稍作改動 示例 1 輸入 1,2,3,1 輸出 4 解釋 選擇 1 號預...
LeetCode 面試題 17 16 按摩師
leetcode 面試題 17.16.按摩師 乙個有名的按摩師會收到源源不斷的預約請求,每個預約都可以選擇接或不接。在每次預約服務之間要有休息時間,因此她不能接受相鄰的預約。給定乙個預約請求序列,替按摩師找到最優的預約集合 總預約時間最長 返回總的分鐘數。注意 本題相對原題稍作改動 示例 1 輸入 ...