代码随想录算法训练营第37期 第三十一天 | LeetCode455.分发饼干、376. 摆动序列、53. 最大子序和
一、455.分发饼干
解题代码C++:
class Solution {
public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(), g.end());sort(s.begin(), s.end());int result = 0;int index = s.size() - 1;for(int i = g.size() - 1; i >= 0; i --)if(index >= 0 && g[i] <= s[index]){result ++;index --;}return result;}
};
题目链接/文章讲解/视频讲解:
https://programmercarl.com/0455.%E5%88%86%E5%8F%91%E9%A5%BC%E5%B9%B2.html
二、376. 摆动序列
解题代码C++:
class Solution {
public:int wiggleMaxLength(vector<int>& nums) {if (nums.size() <= 1) return nums.size();int curDiff = 0; // 当前一对差值int preDiff = 0; // 前一对差值int result = 1; // 记录峰值个数,序列默认序列最右边有一个峰值for (int i = 0; i < nums.size() - 1; i++) {curDiff = nums[i + 1] - nums[i];// 出现峰值if ((preDiff <= 0 && curDiff > 0) || (preDiff >= 0 && curDiff < 0)) {result++;preDiff = curDiff; // 注意这里,只在摆动变化的时候更新prediff}}return result;}
};
题目链接/文章讲解/视频讲解:
https://programmercarl.com/0376.%E6%91%86%E5%8A%A8%E5%BA%8F%E5%88%97.html
三、53. 最大子序和
解题代码C++:
class Solution {
public:int maxSubArray(vector<int>& nums) {int result = -1e5 - 10;int count = 0;for(int i = 0; i < nums.size(); i ++){count += nums[i];if(count > result)result = count;if(count <= 0)count = 0;}return result;}
};
题目链接/文章讲解/视频讲解:
https://programmercarl.com/0053.%E6%9C%80%E5%A4%A7%E5%AD%90%E5%BA%8F%E5%92%8C.html