213. House Robber II

Posted lasclocker

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了213. House Robber II相关的知识,希望对你有一定的参考价值。

  • dp 解法
    /**
     * 转化为
     * Max(rob(nums[0:n-1]), rob(nums[1:n]))
     */
    public int rob(int[] nums) 
        if (nums.length == 0) 
            return 0;
        
        if (nums.length == 1) 
            return nums[0];
        
        int[] pre = Arrays.copyOfRange(nums, 0, nums.length-1);
        int[] after = Arrays.copyOfRange(nums, 1, nums.length);
        return Math.max(subRob(pre), subRob(after));
    

    private int subRob(int[] nums) 
        int[] dp = new int[nums.length + 2];
        for (int i = 0; i < nums.length; i++) 
            dp[i + 2] = Math.max(dp[i] + nums[i], dp[i + 1]);
        
        return dp[nums.length + 1];
    

以上是关于213. House Robber II的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 213. House Robber II

213. House Robber II

213. House Robber II

213. House Robber II

213. House Robber II

leetcode No213. House Robber II