算法篇9-LeetCode面试题 17.16. 按摩师

so easy的一道题目

面试题 17.16. 按摩师

这题目就是一道非常入门的动态规划题目。第i位的时间是前面第2位的时间加上i的时间。状态转移方程就是

其实我的代码还有优化的空间,可以把空间复杂度降低到O(1)。

public int massage(int[] nums) {
        /**
         *
         * 功能描述:一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。
         * 给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。
         *
         *
         * @param: [nums]
         * @return: int
         * @auther: smallfish
         * @date: 2020-03-24 09:01
         */
        if (nums.length == 0) {
            return 0;
        }
        if (nums.length == 1) {
            return nums[0];
        }
        int[] tem = new int[nums.length];
        int temLength = tem.length;
        tem[0] = nums[0];
        tem[1] = nums[0] > nums[1] ? nums[0] : nums[1];
        for (int i = 2; i < nums.length; i++) {
            int temint = nums[i] + tem[i - 2];
            tem[i] = temint > tem[i - 1] ? temint : tem[i - 1];
        }
        return tem[temLength - 1] > tem[temLength - 2] ? tem[temLength - 1] : tem[temLength - 2];
    }

你可能感兴趣的:(算法篇9-LeetCode面试题 17.16. 按摩师)