乙個有名的按摩師會收到源源不斷的預約請求,每個預約都可以選擇接或不接。在每次預約服務之間要有休息時間,因此她不能接受相鄰的預約。給定乙個預約請求序列,替按摩師找到最優的預約集合(總預約時間最長),返回總的分鐘數。
注意:本題相對原題稍作改動
輸入: [1,2,3,1]
輸出: 4
解釋: 選擇 1 號預約和 3 號預約,總時長 = 1 + 3 = 4。
輸入: [2,7,9,3,1]
輸出: 12
解釋: 選擇 1 號預約、 3 號預約和 5 號預約,總時長 = 2 + 9 + 1 = 12。
輸入: [2,1,4,5,3,1,1,3]
輸出: 12
解釋: 選擇 1 號預約、 3 號預約、 5 號預約和 8 號預約,總時長 = 2 + 4 + 3 + 3 = 12。
動態規劃
當nums為空的時候,return 0;
取nums[0]和nums[1]較大的值,從而判斷從1號開始預約還是從2號預約;
令dp[i]存放i位置子陣列的最大和;
預約時相鄰的位置不能預約,所以應該判斷當前的元素(nums[i])+dp[i-2]是否大於dp[i-1】,因此可以寫出狀態轉移方程: dp[i] = math.max(dp[i-1],dp[i-2]+nums[i]);
/*** @param nums
* @return
*/var massage = function(nums)
return dp[len-1];
};
打家劫舍 按摩師
1.打家劫舍 56min 你是乙個專業的小偷,計畫偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝置的情況下,能夠偷竊到的最...
面試金典 按摩師
q 乙個有名的按摩師會收到源源不斷的預約請求,每個預約都可以選擇接或不接。在每次預約服務之間要有休息時間,因此她不能接受相鄰的預約。給定乙個預約請求序列,替按摩師找到最優的預約集合 總預約時間最長 返回總的分鐘數。示例 1 輸入 1,2,3,1 輸出 4 解釋 選擇 1 號預約和 3 號預約,總時長...
每日一題 按摩師選擇預約時間
乙個有名的按摩師會收到源源不斷的預約請求,每個預約都可以選擇接或不接。在每次預約服務之間要有休息時間,因此她不能接受相鄰的預約。給定乙個預約請求序列,替按摩師找到最優的預約集合 總預約時間最長 返回總的分鐘數。注意 本題相對原題稍作改動 這道題與著名的小偷問題其實是相同的,小偷要偷到最多價值的東西,...