贪心算法基础及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日

相关文章

  • C++ 数据结构之kmp算法中的求Next()函数的算法

    C++ 数据结构之kmp算法中的求Next()函数的算法 什么是KMP算法和Next()函数 KMP算法(Knuth-Morris-Pratt算法)是一种字符串匹配算法,能够解决的问题是,在一个文本串S中查找一个模式串P是否出现并且返回第一次出现的位置。而Next()函数则是在KMP算法中使用的一个关键的子函数,用于计算模式串P中每个前缀的最长相同真前缀和后…

    数据结构 2023年5月17日
    00
  • C++数据结构之双向链表

    C++数据结构之双向链表完整攻略 1. 什么是双向链表 双向链表是一种特殊的链表结构,每个节点拥有两个指针域,分别指向前继和后继节点。 双向链表不需要像单向链表那样从头到尾遍历整个链表,可以通过前后指针直接访问前后节点,提高了查找、删除、插入等操作的效率。 双向链表有一些常用的操作,如插入节点、删除节点、查找节点等。 2. 双向链表的实现 2.1 节点定义 …

    数据结构 2023年5月17日
    00
  • Go 数据结构之二叉树详情

    Go 数据结构之二叉树详情 二叉树是一种树形数据结构,它的每个节点至多只有两个子节点,通常称为左子节点和右子节点。在本文中,我们将介绍二叉树的定义、遍历方法和常见应用场景。 定义 一个二叉树是一个有根树,它的每个节点最多有两个子节点,用左子树和右子树来区分。 在 Go 代码中,可以通过如下结构体定义表示二叉树的节点: type Node struct { L…

    数据结构 2023年5月17日
    00
  • 关于Python八大排序实现方法(冒泡排序、快速排序等)

    以下是关于“Python八大排序实现方法(冒泡排序、快速排序等)”的完整攻略: 简介 排序是计算机科学中的一个基本问题,它涉及将一组元素按照某种顺序排列。Python提供了多种排序算法,包括冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序、计数排序和基数排序。本教程将介绍如何使用Python实现这些排序算法,并讨论如何使用这些算法来排序不同类型的数据…

    python 2023年5月14日
    00
  • Python编程实现粒子群算法(PSO)详解

    Python编程实现粒子群算法(PSO)详解 粒子群算法(PSO)是一种基于群体智能的优化算法,它可以用于解决一些优化问题。在本文中,我们将详细讲解如何使用Python编程实现粒子群算法,包括粒子群算法的基本原理、粒子群算法的应用场景以及粒子群算法的注意事项。 粒子群算法的基本原理 粒子群算法是一种基于群体智能的优化算法。在粒子群算法中,我们将待优化的问题看…

    python 2023年5月13日
    00
  • Python实现的数据结构与算法之快速排序详解

    下面是关于“Python实现的数据结构与算法之快速排序详解”的完整攻略。 1. 快速排序算法概述 快速排序是一种高效的排序算法,它的基本思想是通过分治的想将一个大问题解成多个小问题,后递归地解决这些小问题。快速排序的复杂度为O(nlogn),是一种非高的排序算法。 2 快速排序算法实现 下面使用Python实现快速排序的代码: def quick_sort(…

    python 2023年5月13日
    00
  • Python实现的递归神经网络简单示例

    以下是关于“Python实现的递归神经网络简单示例”的完整攻略: 简介 递归神经网络(RNN)是一种神经网络,它可以处理序列数据,例如时间序列或文本。RNN中的神经元可以接收来自前一时间步的输入,并将其传递到下一时间步。Python提供了多种库来实现RNN,包括TensorFlow和PyTorch。本教程将介绍如何使用Python和PyTorch实现一个简单…

    python 2023年5月14日
    00
  • C++数据结构之实现邻接表

    C++数据结构之实现邻接表 在图论中,为了表示节点及其之间的联系,我们需要使用数据结构。邻接表是图的一种常见表示方法,实现方便且高效。 什么是邻接表 邻接表是一种图形式的数据结构,由节点和边组成。它使用链式结构来存储相邻节点的信息。邻接表常用于表示有向图、无向图以及加权图。在邻接表中,每一个节点都存储了一个链表,其中包含了该节点与其他节点之间的连接情况。 实…

    数据结构 2023年5月17日
    00
合作推广
合作推广
分享本页
返回顶部