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

so easy的一道题目

面试题 17.16. 按摩师

这题目就是一道非常入门的动态规划题目。第i位的时间是前面第2位的时间加上i的时间。状态转移方程就是
dp[i] = max(dp[i - 1], dp[i - 2] + nums[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];
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容