Leecode: House Robber II (JS解答)
解题思路:与此问题的前一个题目相比,此题改动的地方在于把链转改为环状,于是作为起始时,起始点有两种情况,偷与不偷,获取这两种情况下值最大的那个
直接上代码,helper方法为动态规划思路方法:
function rob(nums: number[]): number {
if(nums.length == 0) return 0;
if(nums.length == 1) return nums[0];
return Math.max(helper(nums.slice(0, nums.length-1)),helper(nums.slice(1,nums.length)));
function helper(nums: number[]){
let pre = 0,curr = 0,temp = 0;
for(let num of nums){
temp = curr;
curr = Math.max(curr, pre + num);
pre = temp;
}
return curr;
}
};