198. House Robber
View on LeetCode ↗
C++
class Solution {public: int rob(vector<int>& nums) { if (nums.size() == 1) return nums[0]; vector<int> save(nums.size() + 1); save[0] = nums[0]; save[1] = max(nums[1], nums[0]); for (int i = 2; i < nums.size(); i++) { save[i] = max(nums[i] + save[i - 2], save[i - 1]); } return max(save[nums.size() - 1], save[nums.size() - 2]); }};
again simple setup with the array. i had messed up base cases, should have thought of that to save time but thats chill. the main important thing was to loop over the remaining set of "saves" and then decide on each one to either ignore it or keep it and its previous neighbor.