贪心算法题型总结

贪心算法常见题型 贪心算法常见题型 (1)小数背包问题 题目描述 有一个背包,背包容量是M(0<M≤500),有N(1<N≤1000)个物品,物品可以分割成任意大小。 要求尽可能让装入背包中的物品总价值最大,但不能超过总容量。 输入 第1行有两个数,M和N; 第2行到N+I行:第i行为第i-1个物品的价值和质量(均为小于100的正整数),中间用空格隔开。 输出 只有一个数为最大总价值(保留一位小数)。 样例输入 150 7 10 35 40 30 30 60 50 50 35 40 40 10 30 25 样例输 阅读详情

🍋什么是贪心算法?

贪心算法:是一种思想,解答要根据具体题目来编写代码,它让每一步都是局部最优的方案。

🍋1. 分配饼干

题目描述链接

https://leetcode.cn/problems/assign-cookies/

题目特点

寻找最优解,一维数组。

代码实现

贪心大致思路:先边界判断,直接排序,后找到需要的情况返回。

public int findContentChildren(int[] g, int[] s) {
   
   
    if (g==null || s==null){
   
   
        return 0;
    }
    Arrays.sort(g);
    Arrays.sort(s);
    int i=0,j=0;
    while(i<g.length&&j<s.length){
   
   
        if (g[i]<=s[j]){
   
   
            j++;
        }
        i++;
    }
    return j;
}
时间复杂度和空间复杂度

时间复杂度:O(NlogN);

空间复杂度:O(N)。

🍋2. 不重叠的区间个数

题目描述链接

https://leetcode.cn/problems/non-overlapping-intervals/

题目特点

寻找最优解,一维数组。

代码实现

贪心大致思路:先边界判断,直接排序,后找到需要的情况返回。

public int eraseOverlapIntervals(int[][] intervals) {
   
   
    //边界判断
    if (intervals==null){
   
   
        return 0;
    }
    //排序
    Arrays.sort(intervals, new Comparator<int[]>() {
   
   
        @Override
        public int compare(int[] o1, int[] o2) {
   
   
            return (o1[1]<o2[1])?-1:(o1[1]==o2[1]?0:1);
        }
    });
    //找到符合条件的情况
    int ans=0;
    int right=intervals[0][1];
    for (int i = 0; i < intervals.length; i++) {
   
   
        if (intervals[i][0]>=right){
   
   
            ans++;
            right=intervals[i][1];
        }
    }
    return intervals.length-ans;
}
时间复杂度和空间复杂度

时间复杂度:O(NlogN);

空间复杂度:O(N)。

🍋3. 投飞镖刺破气球

题目描述链接

https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-balloons/

题目特点

寻找最优解,一维数组。

代码实现

贪心大致思路:先边界判断,直接排序,后找到需要的情况返回。

public int findMinArrowShots(int[][] points) {
   
   
    //先判断边界条件
    if (points==null){
   
   
        return 0;
    }
    //排序
    Arrays.sort(points, new Comparator<int[]>() {
   
   
        
贪心算法经典例题题型 文章目录区间选点最大不相交区间数量区间分组 区间选点 题目大意 给定 NNN 个闭区间 [ai,bi][a_i,b_i][ai​,bi​],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。输出选择的点的最小数量。位于区间端点上的点也算作区间内。 输入格式 第一行包含整数 NNN,表示区间数。接下来 NNN 行,每行包含两个整数 ai,bia_i,b_iai​,bi​,表示一个区间的两个端点。 输出格式 输出一个整数,表示所需的点的最小数量。 数据范围:1≤N≤105,−109≤ai≤bi≤1 阅读详情

相关推荐

贪心算法 30 题实战:从 5 大高频题型到 3 种证明思路(附 C++/Python 代码)

本文系统解析贪心算法的核心框架与实战应用,涵盖5大高频题型和3种证明思路,提供详细的C++/Python代码实现。通过LeetCode经典例题,如区间调度、股票交易等,深入讲解贪心选择性质与最优子结构,帮助读者掌握算法面试中的解题技巧与证明方法。

weixin_30983353的博客 293

贪心算法~~

目录一、理论基础二、题目练习(1)455. 分发饼干(2)53. 最大子数组和 - 力扣(3)122. 买卖股票的最佳时机 II - 力扣(LeetCode)(4)860. 柠檬水找零 - 力扣(LeetCode)(5)905. 区间选点 - AcWing题库 (6)AcWing 908. 最大不相交区间数量 (7)906. 区间分组 - AcWing题库 (8)907. 区间覆盖 - AcWing题库 (9)148. 合并果子 - AcWing题库 (10)913. 排队打水 - AcWing题库(11)

qq_73704268的博客 901

贪心算法精讲(附4道题型详细解析及代码)

学校在最近几天有 n(≤100)个活动,这些活动都需要使用学校的大礼堂,在同一时间,礼堂只能被一个活动使。由于有些活动时间上有冲突,学校办公室人员只好让一些活动放弃使用礼堂而使用其他教室。现在给出n 个活动使用礼堂的起始时间 begin i 和结束时间 end i (begin i< end i),请你帮助办公室人员安排一些活动来使用礼堂,要求安排的活动尽量多。请问最多可以安排多少活动?

m0_72568314的博客 2414

混合开关电容DCDC变换器技术解析与工程应用指南

在电源设计领域,传统DCDC变换器在高降压比或高升压比场景下,往往面临占空比过窄、开关应力大、效率偏低等瓶颈。开关电容变换器虽能实现固定比例的电压变换,却受限于调节能力。混合开关电容DCDC变换器通过“开关电容网络粗调变比+电感式DCDC细调输出”的策略,兼顾高效率、高功率密度与宽调压范围。本文梳理了其典型拓扑(如2:1/4:1 SC+Buck)、关键对比、控制策略(含软充电)及工程应用中的常见问题,帮助电源工程师在服务器供电、快充、车载电源等场景下快速选型与调试。

weixin_29164185的博客 311

BEVFusion(mit)最强环境安装,部署复现

BEVFusion作为一项经典的工作,值得深入探索。然而由于配置环境比较麻烦,耽误了一些时间。经过几次成功配置之后,有了一些总结,在这里记录下来,供大家参考避坑,也方便自己下次查阅。

qq_45783225的博客 1万+

PSIM联合VS--C++实现正弦波发生

在利用VS联合PSIM仿真中,想要用VS构建一个正弦波发生模块。可以利用Sin函数进行编写,重点是需要编写一个计数器程序。首先打算用for循环语句来构建计数器,但在for循环运行时无法跳出,不能实时获得计数器的值。同理,while循环也无法实现。最后将count变量设置为static型,解决了这一问题。 体现出对于c++程序的运行不够了解,需要多进行程序的编写和调试。 //时钟计数器 static int count = 0; count++; if (count > Sinfre)

weixin_41850228的博客 1086

RagFlow实战:如何用DeepDoc引擎高效处理扫描PDF文档(附完整代码解析)

本文详细解析了如何利用RagFlow的DeepDoc引擎高效处理扫描PDF文档。通过实战演示从环境搭建、PDF预处理、文本检测与识别,到布局分析与表格结构提取的完整流程,并提供了完整的代码实现。该方案超越了传统OCR,能输出保留原始版面信息的结构化数据,为构建高质量知识库提供了强大支持。

weixin_29245767的博客 299

5分钟搞定!用ZLMediaKit搭建GB28181视频监控系统(含避坑指南)

本文提供了一份基于ZLMediaKit搭建GB28181视频监控系统的实战指南。文章详细介绍了从环境准备、核心组件(ZLMediaKit与SIP服务器)部署、摄像头配置到内外网穿透的完整流程,并重点分享了设备ID配置、防火墙设置等关键避坑经验,帮助开发者快速构建稳定可控的监控平台。

apple5的专栏 1081

69页完整版智慧港口综合解决方案

智慧港口需求4港机远程操控等自动化改造需求自动化码头AGV无线通信及专用视频系统需求安全生产视频监控类需求港机RCMS及设备管理需求岸边智能理货码头三维全景应用智慧港口解决方案5自动化码头AGV/跨运车/无人集卡无线接入港机远控视觉及冗余无线通信视觉集卡防吊起系统集装箱码头岸边智能理货港机RCMS系统无线接入港机智能化管理(无线高清视频监控、一键报警、远程抄表系统)港口拖轮无线接入岸边溢油监测系统TD-LTE覆盖及业务终端接入港口生产管理系统港口可视化集群调度港口GiNMS综合网络设备智能管理全球作业效率最

zuoan1993的博客 2128

Transformer实战(40)——Transformer时间序列数据建模

Transformer 因其在自然语言处理 (Natural Language Processing, NLP) 任务中的优异表现而被广泛应用,其主要优势在于能够有效建模时间序列数据。这些数据可以是文本,也可以是非文本。本节将介绍如何使用 Transformer 进行时间序列数据建模和预测,将学习时间序列的基本概念,并在此基础上使用一个简单的模型,用以初步了解时间序列数据,并为各种预测任务奠定基础。

盼小辉丶的博客 2320

OTA 升级失败/回滚策略设计:打造安全可靠的双分区/断点续传/签名校验方案

双分区机制(A/B Partitioning)是OTA升级的“保险箱”。简单来说,设备存储分为两个分区:A分区(当前运行)和B分区(备用)。升级时,新固件写入B分区,A分区保持不变。如果升级成功,系统切换到B分区运行;如果失败,设备直接回滚到A分区,完全不受影响。这就像玩游戏存档:你打Boss前存了个档,万一挂了还能读档重来。双分区就是设备的“读档”机制,避免了变砖的尴尬。以Android设备为例,Google从Android 7.0开始强制引入A/B分区机制(Seamless Updates)。

大模型大数据攻城狮的专栏 1230

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: 算法---双指针题型(题目来源于力扣题库)
下一篇: 二分查找算法题型总结
fengprogrammer
博客等级 码龄6年 2985粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值