力扣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 }

 

posted @ 2025-04-11 14:05  J&YANG  阅读(13)  评论(0)    收藏  举报