class Solution {
public:
int rob(vector<int>& nums) {
int n = nums.size();
if (n == 1) {
return nums[0];
}
// 去第一个房间
vector<int> f(n + 1);
// 不去第一个房间
vector<int> g(n + 1);
f[0] = nums[0];
f[1] = max(nums[0], nums[1]);
g[0] = 0;
g[1] = nums[1];
for (int i = 2; i < n; ++i) {
f[i] = max(f[i - 2] + nums[i], f[i - 1]);
g[i] = max(g[i - 2] + nums[i], g[i - 1]);
}
return max(f[n - 2], g[n - 1]);
}
};