leetcode 213. 打家劫舍 II

落日映苍穹つ 2023-07-03 06:12 48阅读 0赞

213. 打家劫舍 比较简单。

这一题只不过比上一题多讨论一下第一个和最后一个取谁的情况即可

复杂度2*n

  1. class Solution {
  2. public:
  3. int rob(vector<int>& nums) {
  4. int n=nums.size();
  5. if(n==1) return nums[0];
  6. if(n==0) return 0;
  7. int dp[n+3];
  8. dp[0]=0;
  9. int M=0;
  10. for(int i=1;i<n;i++)
  11. {
  12. if(i==1) dp[i]=nums[i-1];
  13. else
  14. {
  15. dp[i]=max(dp[i-2]+nums[i-1],dp[i-1]);
  16. }
  17. M=max(dp[i],M);
  18. }
  19. dp[1]=0;
  20. for(int i=2;i<=n;i++)
  21. {
  22. if(i==2) dp[i]=nums[i-1];
  23. else
  24. {
  25. dp[i]=max(dp[i-2]+nums[i-1],dp[i-1]);
  26. }
  27. M=max(dp[i],M);
  28. }
  29. return M;
  30. }
  31. };

发表评论

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

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

相关阅读

    相关 213. 打家劫舍 II

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

    相关 leetcode213打家劫舍II

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