原题力扣213打家劫舍2:https://leetcode.cn/problems/house-robber-ii/description/
class Solution { public: int robRange(vector<int>& values, int start, int end) { int n = values.size(); vector<int> dp(n); dp[start] = values[start]; dp[start + 1] = max(values[start], values[start + 1]); for (int i = start + 2; i <= end; i++) { dp[i] = max(dp[i - 1], dp[i - 2] + values[i]); } return dp[end]; } /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param values int整型vector * @return int整型 */ int maxPatrolValue(vector<int>& values) { int n = values.size(); if (n == 0) { return 0; } if (n == 1) { return values[0]; } if (n == 2) { return max(values[0], values[1]); } return max(robRange(values, 0, n - 2), robRange(values, 1, n - 1)); } };
时间复杂度:O(n),遍历两次数组
空间复杂度:O(n),存储dp数组