LEETCODE***师

1.递归算法(数据大时会超时)

public int massage(int[] nums) {
    if(nums.length==0)
        return 0;
    if(nums.length==1)
    return nums[0];
    if(nums.length==2)
    return Math.max(nums[0], nums[1]);
if(nums.length==3)
    return Math.max(nums[0]+nums[2], nums[1]);

    int result1=nums[nums.length-1]+massage(deleteArr(nums, 2));
int result2=nums[nums.length-2]+massage(deleteArr(nums, 3));
int result=Math.max(result1, result2);
return result;
}
public int[] deleteArr(int[] nums,int n) 
{
    int[]arr=new int[nums.length-n];
    for(int i=0;i<arr.length;i++)
    {
        arr[i]=nums[i];
    }
    return arr;
}

2.改进为动态规划(空间复杂度为O(n))

public int massage(int[] nums) {
    if(nums.length==0)
        return 0;
    if(nums.length==1)
        return nums[0];
    if(nums.length==2)
        return Math.max(nums[0], nums[1]);
    int result=0;
    int[]dp=new int[nums.length];
    dp[0]=nums[0];
    dp[1]=Math.max(nums[0], nums[1]);
    for(int i=2;i<nums.length;i++)
    {
        dp[i]=Math.max(dp[i-1], dp[i-2]+nums[i]);
    }

    return dp[nums.length-1];
}

3.改进空间复杂度为O(1)

public int massage(int[] nums) {
    int a = 0, b = 0;
    for (int i = 0; i < nums.length; i++) {
        int c = Math.max(b, a + nums[i]);
        a = b;
        b = c;
    }
    return b;
}

作者:sweetiee
链接:https://leetcode-cn.com/problems/the-masseuse-lcci/solution/100-kong-jian-cong-onyou-hua-dao-o1bao-hui-by-swee/
来源:力扣(LeetCode)

全部评论

相关推荐

合适才能收到offe...:招聘上写这些态度傲慢的就别继续招呼了,你会发现hr和面试官挺神的,本来求职艰难就可能影响一些心态了,你去这种公司面试的话,整个心态会炸的。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务