class Solution {
public:
int helper(vector<int>& nums, int left, int right) {
if (left == right)
return nums[left];
vector<int> dp(right + 1, 0);
dp[left] = nums[left];
dp[left + 1] = max(nums[left], nums[left + 1]);
for (int j = left + 2; j <= right; j++) {
dp[j] = max(dp[j - 1], dp[j - 2] + nums[j]);
}
return dp[right];
}
int rob(vector<int>& nums) {
if (nums.size() == 1)
return nums[0];
if (nums.size() == 2)
return max(nums[0], nums[1]);
if (nums.size() == 3)
return max(max(nums[0], nums[1]), nums[2]);
int temp1 = helper(nums, 0, nums.size() - 2);
int temp2 = helper(nums, 1, nums.size() - 1);
return max(temp1, temp2);
}
};
LeetCode213.打家劫舍
最新推荐文章于 2024-07-13 13:36:16 发布