class Solution {
public:
int rob(vector<int>& nums) {
int ans = 0;
int n = nums.size();
if(n == 1) //特殊情况:只有1个元素
return nums[0];
if(n == 2) //特殊情况:只有2个元素
return max(nums[0], nums[1]);
int dp[n];
dp[0] = nums[0]; //dp[1]就是第一个元素
dp[1] = max(nums[0], nums[1]); //dp[2]是前两个元素的较大那个
for(int i = 2; i < n; i++){ //通俗的公式是,本身值+前一个 与 上一个进行比较
dp[i] = max(dp[i - 1], dp[i - 2] + nums[i]);
}
return dp[n - 1];
}
};
Accepted
68/68 cases passed (0 ms)
Your runtime beats 100 % of cpp submissions
Your memory usage beats 73.66 % of cpp submissions (7.4 MB)