网站做外链软件,厦门专业做优化的公司,重庆市建设工程造价信息官网,电子元器件采购商城提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、分发饼干二、摆动序列三、最大子树组合 前言
今天是跟着代码随想录刷题的第31天#xff0c;主要学习了分发饼干#xff0c;摆动序列和最大子树组合这三个… 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档 文章目录 前言一、分发饼干二、摆动序列三、最大子树组合 前言
今天是跟着代码随想录刷题的第31天主要学习了分发饼干摆动序列和最大子树组合这三个题目。 一、分发饼干
思路就是大的东西给大孩子小东西给小孩子 代码
class Solution {
public:int findContentChildren(vectorint g, vectorint s) {sort(g.begin(),g.end());sort(s.begin(),s.end());int js.size()-1;int result0;for(int ig.size()-1;i0;i--){if(j0s[j]g[i]){result;j--;}}return result;}
};
二、摆动序列
思路我直接先去重当然我这个去重去的是连续的重复而不是所谓的去重只要这一个和上一个不一样我就放到新数组里如果一样我就不放然后后面这样看这一个和上一个的差与下一个与这一个的差是不是符号相反相反结果就加1当然第一个和最后一个是必有的所以reuslt的初始值直接设成2就可以了。 代码
class Solution {
public:int wiggleMaxLength(vectorint nums) {vectorint nums1;for(int i0;inums.size();i){if(i0nums[i]nums[i-1]) continue;nums1.push_back(nums[i]);}if(nums1.size()0||nums1.size()1||(nums1.size()2)) return nums1.size();int result2;for(int i1;inums1.size()-1;i){if((nums1[i]-nums1[i-1])*(nums1[i1]-nums1[i])0) result;}return result;}
};
三、最大子树组合
思路这题暴力会超时所以用贪心如果我现在的和是负数那么我加上我后面的数就是负优化所以直接用前面的数字当做起点重新开始出发因为要考虑到有可能都是负数所以最大值的取值放在判断前面。
class Solution {
public:int result0;int max1INT_MIN;int maxSubArray(vectorint nums) {for(int i0;inums.size();i){resultresultnums[i];max1max(result,max1);if(result0){result0;continue;}}return max1;}
};