程式語言 - LeetCode - C++ - 213. House Robber II



參考資訊:
https://www.cnblogs.com/grandyang/p/4518674.html

題目:


解答:

class Solution {
public:
    int rob(vector<int>& nums) {
        if (nums.size() <= 1) {
            return nums.empty() ? 0 : nums[0];
        }
        
        auto rob = [&](int l, int r) {
            int odd = 0;
            int even = 0;

            for (int i = l; i < r; ++i) {
                if (i % 2 == 0) {
                    even = max(even + nums[i], odd);
                }
                else {
                    odd = max(odd + nums[i], even);
                }
            }

            return max(even, odd);
        };

        return max(rob(0, nums.size() - 1), rob(1, nums.size()));
    }
};