【Day23 LeetCode】贪心算法题

一、贪心算法

贪心没有套路,只有碰运气(bushi),举反例看看是否可行,(运气好)刚好贪心策略的局部最优就是全局最优。

1、分发饼干 455

思路:按照孩子的胃口从小到大的顺序依次满足每个孩子,对于每个孩子,应该选择可以满足这个孩子的胃口且尺寸最小的饼干

CPP 复制代码
class Solution {
public:
    int findContentChildren(vector<int>& g, vector<int>& s) {
        sort(g.begin(), g.end());
        sort(s.begin(), s.end());
        int d1 = 0, d2 = 0;
        int cnt = 0;
        while(d2 < s.size() && d1 < g.size()){
            if(g[d1] <= s[d2++]){
                ++cnt;
                ++d1;
            }
        }
        return cnt;
    }
};

2、摆动序列 376

贪心:删除单调坡度上的节点,这个坡度就可以有两个局部峰值。所以求长度的问题变成求峰值个数。

CPP 复制代码
class Solution {
public:
    int wiggleMaxLength(vector<int>& nums) {
        int cur = 0, pre = 0;
        int ans = 1;
        for(int i=0; i<nums.size()-1; ++i){
            cur = nums[i+1] - nums[i]; // 当前的差值
            // 差值正负出现变化-->峰值出现
            if((cur > 0 && pre <= 0) || (cur < 0 && pre >= 0)){
                ++ans;
                pre = cur; // 只在摆动的时候更新
            }
        }
        return ans;
    }
};

3、最大子序和 53

思路:负的子序和只会拉低最大子序和

CPP 复制代码
class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int ans = INT_MIN, s = 0;
        for(int i=0; i<nums.size(); ++i){
            s += nums[i];
            if(s > ans)
                ans = s;
            if(s < 0)
                s = 0;
        }
        return ans;
        
    }
};

二、写在后面

贪心得多练。今天的摆动序列一开始没想出来。

相关推荐
月明长歌1 天前
【码道初阶】【LeetCode 102】二叉树层序遍历:如何利用队列实现“一层一层切蛋糕”?
java·数据结构·算法·leetcode·职场和发展·队列
yaoh.wang1 天前
力扣(LeetCode) 66: 加一 - 解法思路
python·程序人生·算法·leetcode·面试·职场和发展·跳槽
长安er1 天前
LeetCode 01 背包 & 完全背包 题型总结
数据结构·算法·leetcode·动态规划·背包问题
小南家的青蛙1 天前
LeetCode第2658题 - 网格图中鱼的最大数目
算法·leetcode·职场和发展
夏鹏今天学习了吗1 天前
【LeetCode热题100(73/100)】买卖股票的最佳时机
算法·leetcode·职场和发展
Voyager_41 天前
算法学习记录17——力扣“股票系列题型”
学习·算法·leetcode
XFF不秃头1 天前
【力扣刷题笔记-在排序数组中查找元素的第一个和最后一个位置】
c++·笔记·算法·leetcode
im_AMBER1 天前
Leetcode 79 最佳观光组合
笔记·学习·算法·leetcode
练习时长一年1 天前
在排序数组中查找元素的第一个和最后一个位置
数据结构·算法·leetcode
资深web全栈开发1 天前
LeetCode 3573. 买卖股票的最佳时机 V - 动态规划解法详解
算法·leetcode·动态规划