455.分发饼干(简单)
leetcode题目链接:455. 分发饼干 - 力扣(LeetCode)
文章讲解:代码随想录 (programmercarl.com)
视频讲解:贪心算法,你想先喂哪个小孩?| LeetCode:455.分发饼干_哔哩哔哩_bilibili
题目描述
解题思路
贪心思路。我们先将两个数组排序。
假如s[i]这块饼干不能满足g[j]这个小孩,那么s[i]之后的某块饼干一定可以满足g[j],因为s[i]是从小到大排序的。一直遍历到最后,返回能满足小孩的个数即可。
题目代码
class Solution {
public:
int findContentChildren(vector<int>& g, vector<int>& s) {
sort(g.begin(), g.end());
sort(s.begin(), s.end());
int count = 0;
int g_index = 0, s_index = 0;
while (s_index < s.size()&&g_index<g.size())
{
if (s[s_index] >= g[g_index])
{
s_index++;
g_index++;
}
else
s_index++;
}
return g_index;
}
};
376. 摆动序列(中等)
leetcode题目链接:376. 摆动序列 - 力扣(LeetCode)
文章讲解:代码随想录 (programmercarl.com)
视频讲解:贪心算法,寻找摆动有细节!| LeetCode:376.摆动序列_哔哩哔哩_bilibili
题目描述
具体解题思路参考文章
题目代码
class Solution {
public:
int wiggleMaxLength(vector<int>& nums) {
if (nums.size() <= 1)
return nums.size();
int last = 0;
int now = 0;
int count = 0;
for (int i = 0; i < nums.size() - 1; i++)
{
now = nums[i + 1] - nums[i];
if ((last <= 0 && now > 0) || last >= 0 && now < 0)
{
count++;
last = now;
}
}
return count + 1;
}
};
53. 最大子序和(中等)
leetcode题目链接:53. 最大子数组和 - 力扣(LeetCode)
文章讲解:代码随想录 (programmercarl.com)
视频讲解:贪心算法的巧妙需要慢慢体会!LeetCode:53. 最大子序和_哔哩哔哩_bilibili
题目描述
解题思路
贪心思想,如果当前和为负数,那么再相加一定会使得未来的和减小,故如果当前和为负数,就sum=0,重新开始。
题目代码
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int sum = 0, max_sum = INT_MIN;
for (int i = 0; i < nums.size(); i++)
{
sum += nums[i];
if (sum > max_sum)
max_sum = sum;
if (sum < 0)
sum = 0;
}
return max_sum;
}
};