題目:乙個有名的按摩師會收到源源不斷的預約請求,每個預約都可以選擇接或不接。在每次預約服務之間要有休息時間,因此她不能接受相鄰的預約。給定乙個預約請求序列,替按摩師找到最優的預約集合(總預約時間最長),返回總的分鐘數
解法:動態規劃
思路:數學符號:dp[i]表示到達位置i的最長時間;狀態轉移方程:對於任意乙個》=3的i,dp[i] = math.max(dp[i-2],dp[i-3])+nums[i](或者說dp[i] = max(dp[i - 1], dp[i - 2] + nums[i]);
**:class solution
if(nums.length1)
if(nums.length==2)
int len = nums.length;
int dp = new int[len]; //dp[i]表示到達位置i的最長時間
dp[0] = nums[0];
dp[1] = nums[1];
dp[2] = nums[0]+nums[2];
for(int i=3;i優化空間複雜度:
class solution
if(nums.length1)
if(nums.length==2)
int len = nums.length;
int a = nums[0];
int b = nums[1];
int c = nums[0]+nums[2];
for(int i=3;i思路二:數學符號:定義dp[i][0],dp[i][1],其中dp[i][0]表示第i個不接,dp[i][1]表示第i個接;狀態轉移方程:dp[i][0]=max(dp[i−1][0],dp[i−1][1]),dp[i][1]=dp[i−1][0]+nums[i],最後答案即為max(dp[n][0],dp[n][1])
面試題17,16 按摩師
乙個有名的按摩師會收到源源不斷的預約請求,每個預約都可以選擇接或不接。在每次預約服務之間要有休息時間,因此她不能接受相鄰的預約。給定乙個預約請求序列,替按摩師找到最優的預約集合 總預約時間最長 返回總的分鐘數。注意 本題相對原題稍作改動 示例 1 輸入 1,2,3,1 輸出 4 解釋 選擇 1 號預...
面試題 17 16 按摩師
題目 乙個有名的按摩師會收到源源不斷的預約請求,每個預約都可以選擇接或不接。在每次預約服務之間要有休息時間,因此她不能接受相鄰的預約。給定乙個預約請求序列,替按摩師找到最優的預約集合 總預約時間最長 返回總的分鐘數。注意 本題相對原題稍作改動 示例 1 輸入 1,2,3,1 輸出 4 解釋 選擇 1...
面試題 17 16 按摩師
乙個有名的按摩師會收到源源不斷的預約請求,每個預約都可以選擇接或不接。在每次預約服務之間要有休息時間,因此她不能接受相鄰的預約。給定乙個預約請求序列,替按摩師找到最優的預約集合 總預約時間最長 返回總的分鐘數。注意 本題相對原題稍作改動 示例 1 輸入 1,2,3,1 輸出 4 解釋 選擇 1 號預...