贪心算法基础及leetcode例题

理论

本质:找到每个阶段的局部最优,然后去推导得到全局最优
两个极端:常识&&很难:

很多同学通过了贪心的题目,但都不知道自己用了贪心算法,因为贪心有时候就是常识性的推导,所以会认为本应该就这么做!

套路:
贪心没有套路,说白了就是常识性推导加上举反例
做题的时候,只要想清楚 局部最优 是什么,如果推导出全局最优,其实就够了。

贪心算法一般分为如下四步:

将问题分解为若干个子问题
找出适合的贪心策略
求解每一个子问题的最优解
将局部最优解堆叠成全局最优解
这个四步其实过于理论化了,我们平时在做贪心类的题目 很难去按照这四步去思考,真是有点“鸡肋”。

Leetcode题目

简单题

455.分发饼干

思路:大饼干 喂 胃口大的kid,才能充分利用
贪心算法基础及leetcode例题

class Solution {
    public int findContentChildren(int[] g, int[] s) {
        Arrays.sort(g);
        Arrays.sort(s);
        int j=s.length-1;
        int sum = 0;

        for(int i=g.length-1;i>=0;i--){
            if(j>=0 && s[j]>=g[i]){
                sum++;
                j--;
            }
        }
        return sum;
    }
}

中等题

序列问题---376. 摆动序列

股票问题---122. 买卖股票的最佳时机 II

两个维度权衡问题---135. 分发糖果

原文链接:https://www.cnblogs.com/yunshalee/p/17336137.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:贪心算法基础及leetcode例题 - Python技术站

(0)
上一篇 2023年4月20日
下一篇 2023年4月22日

相关文章

  • java数据结构和算法中数组的简单入门

    下面是关于 “JAVA数据结构和算法中数组的简单入门”的攻略。 数组的定义和介绍 在Java中,数组是同一类型的数据元素的集合,元素可以通过索引进行访问。数组的元素可以是各种类型的数据,包括整数,浮点数,字符和字符串等。 在Java中,数组是一个对象。这意味着数组变量是对数组对象的引用,而不是数组对象本身。当你声明一个数组时,你实际上声明了一个数组引用变量。…

    数据结构 2023年5月17日
    00
  • 实际问题中用到的算法——递归算法确定插帧顺序

    问题: 现在需要给一个视频序列插帧,插帧算法要求每次只能由两帧输入插值得到其中间帧。如果现在需要给一个视频做 4 倍(或者更高的 8,16 倍等类似)的插帧,则一个插帧的思路是当前视频每相邻帧之间插入 3 帧,即:假设插帧前视频帧序号是 0,4,8,12…,则插帧时补充相邻帧跨过的 3 个序号,得到插帧后的视频帧序号为 0,1,2,3,4,5,6,.. 即可…

    算法与数据结构 2023年4月18日
    00
  • 京东LBS推荐算法实践

    作者:京东零售 郑书剑 1、推荐LBS业务介绍 1.1 业务场景 现有的同城购业务围绕京东即时零售能力搭建了到店、到家两种业务场景。同城业务与现有业务进行互补,利用高频,时效性快的特点,可以有效提升主站复访复购频次,是零售的重要战略方向。 1.2 名词解释 LBS:基于位置的服务(Location Based Services)。 下文LBS商品代指京东小时…

    算法与数据结构 2023年4月17日
    00
  • Python数据结构与算法之图的基本实现及迭代器实例详解

    下面是详细讲解“Python数据结构与算法之图的基本实现及迭代器实例详解”的完整攻略,包含两个示例说明。 图的基本实现 图是由节点和边组成的数据结构。在Python中,可以使用字典和集合来表示图。字典用于存储节点和它们的邻居,集合用于存储节点。 下面是一个简单的Python实现: class Graph: def __init__(self): self.n…

    python 2023年5月14日
    00
  • 详解计数排序算法原理与使用方法

    算法概述 计数排序是一种非比较排序算法,用于将元素排列在特定顺序。计数排序可以用于整数和某些浮点数。它的基本思想是在需要排序的数组中,如果数组中的最小值是k,最大值是j,那么可以创建一个计数器数组来计算原始数组中每个数值的出现次数。依此可以遍历计数器数组并按计数器的计数值直接填充输出数组,从而生成排序后的数组。具体而言,计数排序由以下 3 个实质性部分组成:…

    算法 2023年3月27日
    00
  • Java数据结构之链表详解

    Java数据结构之链表详解 什么是链表? 链表是一种基本的动态数据结构,它的基本思想是利用指针将一些零散的内存块串联起来,形成一个逻辑上的整体。链表由一些称为节点的元素组成,每个节点保存两个部分:数据和指向下一个节点的指针。相比于数组这种静态数据结构,链表具有动态性,我们可以通过动态的增加或删除节点来改变链表的大小。 链表的分类 单向链表:每个节点只有一个指…

    数据结构 2023年5月17日
    00
  • 2020滴滴最新PHP试题(附答案及解析)

    题目链接:https://www.fibar.cn/newsDetail/18216.html 本文主要是对“2020滴滴最新PHP试题(附答案及解析)”的解题思路和过程进行详细讲解。 题目难度 此题属于中等难度,需要考生具备 PHP 基础知识和算法基础。 题目要求 题目要求我们编写一个程序,实现多个字符串的排序输出。程序需要满足以下要求: 输入:多个字符串…

    数据结构 2023年5月17日
    00
  • 运用Python3实现Two-Pass算法检测区域连通性

    以下是关于“运用Python3实现Two-Pass算法检测区域连通性”的完整攻略: 简介 Two-Pass算法是一种用于检测区域连通性的图像处理算法,它可以将图像中的像素分为不同的连通区域,并为每个连通区域分配一个唯一的标识符。在本教程中,我们将介绍如何使用Python3实现Two-Pass算法,并提供两个示例说明。 实现Two-Pass算法 以下是使用Py…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部