LeetCode213:打家劫舍||

    技术2022-07-21  81

    class Solution { public int rob(int[] nums) { if(nums.length == 0) return 0; if(nums.length == 1) return nums[0]; int[] nums1 = Arrays.copyOfRange(nums, 1, nums.length); int[] nums2 = Arrays.copyOfRange(nums, 0, nums.length - 1); return Math.max(subrob(nums1), subrob(nums2)); } private int subrob(int[] nums){ int len = nums.length; if (len == 0) return 0; if (len == 1) return nums[0]; int[] dp = new int[len+1]; dp[0] = 0; dp[1] = nums[0]; for (int i = 2; i < len+1; i++) { dp[i] = Math.max(dp[i - 1], dp[i - 2] + nums[i-1]); } return dp[len]; } }

     

    Processed: 0.009, SQL: 10