团购网站模块,wordpress页面右上,做网站网站代理违法吗,wordpress打卡签到领红包你是一个专业的小偷#xff0c;计划偷窃沿街的房屋#xff0c;每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈#xff0c;这意味着第一个房屋和最后一个房屋是紧挨着的。同时#xff0c;相邻的房屋装有相互连通的防盗系统#xff0c;如果两间相邻的房屋在同一晚…你是一个专业的小偷计划偷窃沿街的房屋每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈这意味着第一个房屋和最后一个房屋是紧挨着的。同时相邻的房屋装有相互连通的防盗系统如果两间相邻的房屋在同一晚上被小偷闯入系统会自动报警。
给定一个代表每个房屋存放金额的非负整数数组计算你 在不触动警报装置的情况下 今晚能够偷窃到的最高金额。
示例 1
输入nums [2,3,2] 输出3 解释你不能先偷窃 1 号房屋金额 2然后偷窃 3 号房屋金额 2, 因为他们是相邻的。
示例 2
输入nums [1,2,3,1] 输出4 解释你可以先偷窃 1 号房屋金额 1然后偷窃 3 号房屋金额 3。 偷窃到的最高金额 1 3 4 。
示例 3
输入nums [1,2,3] 输出3
提示 1 nums.length 100 0 nums[i] 1000 AC:
/** lc appleetcode.cn id213 langcpp** [213] 打家劫舍 II*/// lc codestart
class Solution {
private:int commonRob(vectorint nums, int start, int end) {if(end - start 0)return nums[start];vectorint dp(nums.size());dp[start] nums[start];dp[start 1] max(nums[start], nums[start 1]);for(int i start 2; i end; i) {dp[i] max(dp[i - 2] nums[i], dp[i - 1]);}return dp[end];}
public:int rob(vectorint nums) {if(nums.size() 0)return 0;if(nums.size() 1)return nums[0];int dp1 commonRob(nums, 0, nums.size() - 2);int dp2 commonRob(nums, 1, nums.size() - 1);return max(dp1, dp2)}
};
// lc codeendRE:
/** lc appleetcode.cn id213 langcpp** [213] 打家劫舍 II*/// lc codestart
class Solution {
private:int commonRob(vectorint nums, int start, int end) {if(end - start 0)return nums[start];vectorint dp(nums.size());dp[start] nums[start];dp[start 1] max(nums[start], nums[start 1]);for(int i start 2; i end; i) {dp[i] max(dp[i - 2] nums[i], dp[i - 1]);}return dp[end];}
public:int rob(vectorint nums) {if(nums.size() 0)return 0;if(nums.size() 1)return nums[0];return max(commonRob(nums, 0, nums.size() - 2), commonRob(nums, 1, nums.size()) - 1);}
};
// lc codeendAC:
/** lc appleetcode.cn id213 langcpp** [213] 打家劫舍 II*/// lc codestart
class Solution {
private:int commonRob(vectorint nums) {if(nums.size() 0)return 0;if(nums.size() 1)return nums[0];vectorint dp(nums.size());dp[0] nums[0];dp[1] max(nums[0], nums[1]);for(int i 2; i nums.size(); i) {dp[i] max(dp[i - 1], dp[i - 2] nums[i]);}return dp[nums.size() - 1];}
public:int rob(vectorint nums) {if(nums.size() 0)return 0;if(nums.size() 1)return nums[0];vectorint nums1(nums.size() - 1);vectorint nums2(nums.size() - 1);for(int i 0; i nums.size() - 1; i) {nums1[i] nums[i];}for(int i 1; i nums.size(); i) {nums2[i - 1] nums[i];}return max(commonRob(nums1), commonRob(nums2));}
};
// lc codeend