题解 | 打家劫舍(二)

打家劫舍(二)

https://www.nowcoder.com/practice/a5c127769dd74a63ada7bff37d9c5815

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param nums int整型vector
     * @return int整型
     */
    int rob1(vector<int>& nums, int left, int right) {
        if(left>right)return 0;
        int n = nums.size();
        vector<int> dp(n);
        vector<int> fp(n);
        dp[left] = nums[left];
        for (int i = left+1; i <= right ; i++) 
        {
            dp[i] = fp[i - 1] + nums[i];
            fp[i] = max(dp[i - 1], fp[i - 1]);
        }
        return max(dp[right], fp[right]);

    }


    int rob(vector<int>& nums) {
        // write code here
        int n = nums.size();
        return max((nums[0]+rob1(nums,2,n-2)),rob1(nums,1,n-1));
    }
};

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务