【LeetCode】面試題 17.16. 按摩師

解題思路

一、定義數組元素的含義

dp[i]:第i次預約時,按摩師總預約時間長

二、找出關係數組元素間的關係式

第i次時,總預約時長,要麼是從第i-2次接受預約後,本次也接受預約,要麼本次不接受預約
dp[i] = max(dp[i - 2] + nums[i-1], dp[i - 1]);

三、找出初始值

由題目可知,第1次接受預約時,總預約時長爲dp[1]=nums[0]

代碼

class Solution {
public:
	int massage(vector<int>& nums) {
		if (nums.size() == 0) return 0;
		vector<int> dp(nums.size() +1);
		//初始值
		dp[1] = nums[0];
		//狀態轉移
		for (int i=2;i<=nums.size();i++)
		{
			dp[i] = max(dp[i - 2] + nums[i-1], dp[i - 1]);
		}
		return dp[nums.size()];
	}
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章