程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> LeetCode:House Robber II淺析

LeetCode:House Robber II淺析

編輯:關於C++

 

House Robber II

  Total Accepted:23515Total Submissions:78696Difficulty:Medium  

 

Note:This is an extension ofHouse Robber.

After robbing those houses on that street, the thief has found himself a new place for his thievery so that he will not get too much attention.

This time, all houses at this place arearranged in a circle.That means the first house is the neighbor of the last one. Meanwhile,

the security system for these houses remain the same as for those in the previous street.

Given a list of non-negative integers representing the amount of money of each house,

determine the maximum amount of money you can rob tonightwithout alerting the police.

Credits:
Special thanks to@Freezenfor adding this problem and creating all test cases.

 

Subscribeto see which companies asked this question

Hide Tags Dynamic Programming Hide Similar Problems (E) House Robber(M) Paint House(E) Paint Fence            

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

LeetCode:House Robber的變形

 

code:

 

class Solution {
public:
    int rob(vector& nums) {
        int n = nums.size();
        if(n==0) return 0;
        if(n==1) return nums[0];
        return max(_rob(nums,0,n-2),_rob(nums,1,n-1));
    }
    
    int _rob(vector& nums, int lo, int hi) {
        
        int preN = 0;
        int preY = 0;
        
        for(int i=lo;i<=hi;i++){
            int tmp = preY;
            preY = max(preN,preY);
            preN = tmp + nums[i];
        }
        return max(preN,preY);
    }
};


 

 

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved