class Solution { static int get(const std::vector &nums, int i) { if (i < 0 || i >= static_cast(nums.size())) { return 0; } return nums[i]; } public: int rob(std::vector nums) { if (nums.size() == 0) { return 0; } for (int i = 1; i < static_cast(nums.size()); ++i) { nums[i] = std::max(nums[i - 1], get(nums, i - 2) + nums[i]); } return nums.back(); } };