题目
题目链接:https://leetcode-cn.com/problems/the-masseuse-lcci/
题目解析:
- 题目比较简单,大致意思就是一串数组中,如何接客可以使得接客时长最长,然后相邻的客人不能接。
- 创建办法就是创建两个数组:
- dp[i][0]表示的是第 i 个客人不接,存储的是第 i 个之前最大的接客时长
- dp[i][1]表示的是第 i 个客人接,存储的是第 i -1个不接之前最大的接客时长加上第 i 个客人的时长
代码
class Solution {
public int massage(int[] nums) {
//如果数组为空,返回0
if(nums.length==0)
return 0;
//创建状态转移数组
int[][] dp = new int[nums.length][2];
//第1个客人不接
dp[0][0]=0;
//第1个客人接
dp[0][1]=nums[0];
//循环遍历
for(int i=1;i<nums.length;i++){
//第i个客人不接,存储第i个客人之前的最大时长
dp[i][0] = Math.max(dp[i-1][0],dp[i-1][1]);
//第i个客人接,只能存储第i个客人不接的时候的最大时长+这个客人的时长
dp[i][1] = dp[i-1][0] + nums[i];
}
//返回最大时长
return Math.max(dp[nums.length-1][0],dp[nums.length-1][1]);
}
}