-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path打家劫舍 II
27 lines (27 loc) · 823 Bytes
/
打家劫舍 II
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Solution {
public:
int rob(vector<int>& nums) {
vector<int> dp1(nums.size()+1);
vector<int> dp2(nums.size()+1);
if(nums.size()==1) return nums[0];
dp1[0]=nums[0];
dp2[nums.size()-1]=nums[nums.size()-1];
if(nums[1]>nums[0]){
dp1[1]=nums[1];
}
else{
dp1[1]=nums[0];
}
if(nums[nums.size()-2]>nums[nums.size()-1]){
dp2[nums.size()-2]=nums[nums.size()-2];
}
else{
dp2[nums.size()-2]=nums[nums.size()-1];
}
for(int i=2;i<nums.size();i++){
dp1[i]=max(dp1[i-2]+nums[i], dp1[i-1]);
dp2[nums.size()-i-1]=max(dp2[nums.size()-i+1]+nums[nums.size()-i-1], dp2[nums.size()-i]);
}
return max(dp1[nums.size()-2],dp2[1]);
}
};