本文主要是介绍213.打家劫舍Ⅱ,简单易懂0ms,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
分享一个容易理解的方式,搞两个dp数组。
class Solution {public int rob(int[] nums) {int len = nums.length;if(len == 1) return nums[0];int[] dp1 = new int[len + 1];// 不抢第一个int[] dp2 = new int[len + 1];// 抢第一个dp1[1] = 0;dp2[1] = nums[0];for(int i = 1, j = 2; i < len; i++,j++){dp1[j] = Math.max(dp1[j - 1], nums[i] + dp1[j - 2]);}for(int i = 1, j = 2; i < len - 1; i++,j++){dp2[j] = Math.max(dp2[j - 1], nums[i] + dp2[j - 2]);}return Math.max(dp1[len], dp2[len - 1]);}
}
这篇关于213.打家劫舍Ⅱ,简单易懂0ms的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!