House Robber II(C++打家劫舍 II)

骑猪看日落 2022-09-03 00:21 239阅读 0赞

(1)排除相邻,两次遍历

  1. class Solution {
  2. public:
  3. int helper(vector<int>& nums,int left,int right) {
  4. int a=nums[left],b=max(nums[left],nums[left+1]);
  5. for(int i=left+2;i<=right;i++) {
  6. int temp=b;
  7. b=max(b,a+nums[i]);
  8. a=temp;
  9. }
  10. return b;
  11. }
  12. int rob(vector<int>& nums) {
  13. if(nums.size()==1) return nums[0];
  14. if(nums.size()==2) return max(nums[0],nums[1]);
  15. int n=nums.size();
  16. return max(helper(nums,0,n-2),helper(nums,1,n-1));
  17. }
  18. };

发表评论

表情:
评论列表 (有 0 条评论,239人围观)

还没有评论,来说两句吧...

相关阅读

    相关 [LeetCode] House Robber 打家劫舍||

    你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系

    相关 [LeetCode] House Robber 打家劫舍

    你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自

    相关 LeetCode 198.House Robber (打家劫舍)

    题目描述: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷