198. 打家劫舍
1 class Solution 2 { 3 public: 4 int rob(vector<int>& nums) 5 { 6 if(nums.size() == 0) return 0; 7 if(nums.size() == 1) return nums[0]; 8 if(nums.size() == 2) return max(nums[0],nums[1]); 9 10 int n = nums.size(); 11 vector<int> dp(n,0); 12 dp[0] = nums[0]; 13 dp[1] = max(nums[0],nums[1]); 14 for(int i = 2;i < n;i ++) 15 { 16 dp[i] = max(nums[i] + dp[i - 2],dp[i - 1]); 17 } 18 return dp[n - 1]; 19 } 20 };
1 class Solution 2 { 3 vector<int> memo; 4 public: 5 int rob(vector<int>& nums) 6 { 7 int n = nums.size(); 8 memo = vector<int>(n,-1); 9 return slove(nums,0); 10 } 11 12 int slove(vector<int> &nums,int i) 13 { 14 if(i >= nums.size()) return 0; 15 if(memo[i] != -1) return memo[i]; 16 17 int res = max(nums[i] + slove(nums,i + 2),slove(nums,i + 1)); 18 memo[i] = res; 19 20 return res; 21 } 22 };
Mamba never out

浙公网安备 33010602011771号