LeetCode题目:面试题 17.16. 按摩师

题目

题目链接:https://leetcode-cn.com/problems/the-masseuse-lcci/
题目解析:

  • 题目比较简单,大致意思就是一串数组中,如何接客可以使得接客时长最长,然后相邻的客人不能接。
  • 创建办法就是创建两个数组:
    • dp[i][0]表示的是第 i 个客人不接,存储的是第 i 个之前最大的接客时长
    • dp[i][1]表示的是第 i 个客人接,存储的是第 i -1个不接之前最大的接客时长加上第 i 个客人的时长
      LeetCode题目:面试题 17.16. 按摩师_第1张图片

代码

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]);
    }
}

你可能感兴趣的:(LeetCode,leetcode,动态规划,算法)