LeetCode 198. House Robber(必须不连续数组的最大和)

xiaoxiao2021-02-28  60

DP,dp[i] = max(dp[i - 2] + nums[i], dp[i - 1])

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

转载请注明原文地址: https://www.6miu.com/read-76106.html

最新回复(0)