198. House Robber Posted on 2021-04-09 Edited on 2022-11-27 In leetcode Disqus: Symbols count in article: 686 Reading time ≈ 1 mins. 198. House Robber 1234567891011121314class Solution {public: int rob(vector<int>& nums) { if(nums.size() == 1) return nums[0]; vector<int> dp(nums.size()); dp[0] = nums[0]; dp[1] = max(nums[0], nums[1]); for(int i = 2; i < nums.size(); ++i) { dp[i] = max(nums[i] + dp[i - 2], dp[i - 1]); } return dp.back(); }}; T(n) : O(n) S(n) : O(n) 注意到每次只用到dp[i - 2]和dp[i - 1],用2变量优化 123456789101112131415class Solution {public: int rob(vector<int>& nums) { if(nums.size() == 1) return nums[0]; int dp[2]; dp[0] = nums[0]; dp[1] = max(nums[0], nums[1]); for(int i = 2; i < nums.size(); ++i) { dp[0] = max(nums[i] + dp[0], dp[1]); swap(dp[0], dp[1]); } return dp[1]; }}; T(n) : O(n) S(n) : O(1) dicussion中的动态规划推导步骤