力扣198. 打家劫舍
记录一下思路
题目:【https://leetcode.cn/problems/house-robber/?envType=study-plan-v2&envId=top-interview-150】
1 class Solution { 2 public: 3 int rob(vector<int>& nums) { 4 int size = nums.size(); 5 6 if (size < 2) 7 return nums[0]; 8 9 vector<int> cache(size, 0); 10 cache[0] = nums[0]; 11 cache[1] = max(nums[0], nums[1]); 12 for (int i = 2; i < size; ++i) { 13 cache[i] = max(cache[i - 1], cache[i - 2] + nums[i]); 14 } 15 return cache[size - 1]; 16 } 17 };
稍微优化一点
1 #define max(a, b) ((a) < (b) ? (b) : (a)) 2 3 int rob(int* nums, int numsSize) { 4 if (numsSize < 2) 5 return nums[0]; 6 7 int a, b, c; 8 a = nums[0]; 9 b = max(nums[0], nums[1]); 10 for (int i = 2; i < numsSize; ++i) { 11 c = max(b, a + nums[i]); 12 a = b; 13 b = c; 14 } 15 return 2 == numsSize ? b : c; 16 }
浙公网安备 33010602011771号