C++第二阶段——数据结构和算法,之前学过一点点数据结构,当时是基于Python来学习的,现在基于C++查漏补缺,尤其是树的部分。这一部分计划一个月,主要利用代码随想录来学习,刷题使用力扣网站,不定时更新,欢迎关注!
文章目录
- 一、198. 打家劫舍
- 二、213. 打家劫舍 II
一、198. 打家劫舍
class Solution {
public:int rob(vector<int>& nums) {if(nums.size()==1) return nums[0];if(nums.size()==2) return max(nums[0],nums[1]);vector<int> dp(nums.size(),0);dp[0] = nums[0];dp[1] = max(nums[0],nums[1]);for(int i=2;i<nums.size();i++){dp[i] = max(dp[i-2]+nums[i],dp[i-1]);}return dp[nums.size()-1];}
};
二、213. 打家劫舍 II
class Solution {
public:int rob(vector<int>& nums) {if(nums.size()==1) return nums[0];if(nums.size()==2) return max(nums[0],nums[1]);vector<int> nums1(nums.begin()+1,nums.end());vector<int> nums2(nums.begin(),nums.end()-1);return max(getmax(nums1),getmax(nums2));}int getmax(vector<int> nums){if(nums.size()==1) return nums[0];if(nums.size()==2) return max(nums[0],nums[1]);vector<int> dp(nums.size(),0);dp[0] = nums[0];dp[1] = max(nums[0],nums[1]);for(int i =2;i<nums.size();i++){dp[i] = max(dp[i-2]+nums[i],dp[i-1]);}return dp[nums.size()-1];}
};