当前位置: 首页 > news >正文

算法奇妙屋(四十二)-贪心算法学习之路 9

文章目录

  • 一. 力扣 [991. 坏了的计算器](https://leetcode.cn/problems/broken-calculator/description/)
    • 1. 题目解析
    • 2. 算法原理
    • 3. 代码
  • 二. 力扣 [56. 合并区间](https://leetcode.cn/problems/merge-intervals/description/)
    • 1. 题目解析
    • 2. 算法原理
    • 3. 代码
  • 三. 力扣 [435. 无重叠区间](https://leetcode.cn/problems/non-overlapping-intervals/description/)
    • 1. 题目解析
    • 2. 算法原理
    • 3. 代码
  • 四. 力扣 [452. 用最少数量的箭引爆气球](https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-balloons/description/)
    • 1. 题目解析
    • 2. 算法原理
    • 3. 代码

一. 力扣991. 坏了的计算器

1. 题目解析

题目还是很清晰易懂的, 只进行两种操作, 从起点数 s 变成 最终值 t, 最少需要几步操作

2. 算法原理

正面算很难, 但可以根据例子, 总结正面推导的特性, 可以用反面来直接排除一种情况

3. 代码

classSolution{publicintbrokenCalc(intstartValue,inttarget){intret=0;while(target>startValue){if(target%2==1){target++;ret++;}else{target/=2;ret++;}}returnret+startValue-target;}}

二. 力扣56. 合并区间

1. 题目解析

题目简单易懂, 就是让求并集

2. 算法原理

3. 代码

classSolution{publicint[][]merge(int[][]intervals){intm=intervals.length,n=2;Arrays.sort(intervals,(a,b)->a[0]-b[0]);List<int[]>ret=newArrayList<>();for(inti=0;i<m;){intleft=intervals[i][0];intright=intervals[i][1];intj=i+1;for(;j<m;j++){ints=intervals[j][0];inte=intervals[j][1];if(right>=s){right=Math.max(right,e);}else{break;}}ret.add(newint[]{left,right});i=j;}returnret.toArray(newint[0][]);// 不限行, 不限列, 有多少元素全变成数组}}

三. 力扣435. 无重叠区间

1. 题目解析

需要移除区间的最少数量, 就是让求最多的不重叠子区间数量, 用求交集的方法

2. 算法原理

与上道题很相似, 不同点在于一个让求重叠区间, 这道题是不重叠区间, 并且这里right和e相等时, 不算做重叠

3. 代码

classSolution{publicinteraseOverlapIntervals(int[][]intervals){Arrays.sort(intervals,(a,b)->a[0]-b[0]);intm=intervals.length,ret=0;for(inti=0;i<m;){intright=intervals[i][1];intj=i+1;for(;j<m;j++){ints=intervals[j][0];inte=intervals[j][1];if(right>s){right=Math.min(right,e);ret++;}else{break;}}i=j;}returnret;}}

四. 力扣452. 用最少数量的箭引爆气球

1. 题目解析

这里要注意, points里面x的值是出于最大值和最小值之间的, 如果直接相减会溢出

2. 算法原理

这道题画出图翻译成人话之后, 和上道题 无重叠区间 一样, 都是求交集, 只不过这里right = e时, 也算作相交

3. 代码

classSolution{publicintfindMinArrowShots(int[][]points){Arrays.sort(points,(a,b)->{// 这里要注意, points里面x的值是出于最大值和最小值之间的, 如果直接相减会溢出returna[0]>b[0]?1:-1;});intm=points.length,ret=0;for(inti=0;i<m;){longright=points[i][1];intj=i+1;for(;j<m;j++){longs=points[j][0];longe=points[j][1];if(right>=s){right=Math.min(right,e);}else{break;}}ret++;i=j;}returnret;}}
http://www.jsqmd.com/news/593874/

相关文章:

  • go学习笔记7(泛型,文件读写,测试)
  • HFSS新手避坑指南:手把手教你调出2.45GHz的侧馈矩形微带天线
  • 实战指南:基于快马平台生成企业级cc switch管理系统,助力游戏项目开发
  • 3分钟学会iOS虚拟定位:免费开源工具iFakeLocation终极指南
  • 深入理解Python @dataclass:从基础到高级用法
  • 2026最权威的十大降AI率平台实测分析
  • 【数据结构与算法】动态规划
  • 基于VSC控制的400kW光伏并网发电厂模型
  • # 微前端架构实战:基于 Vue 3+ qiankun 的模块化开发与部署优
  • Visio 2013小白必看:3分钟搞定E-R图绘制(附数据库模型图技巧)
  • 告别OBS!用JavaCV+FFmpeg在Windows上搭建个人直播推流服务器(含Nginx配置)
  • 高速移动场景下无线信道的延迟-多普勒域建模与优化
  • 前端TypeScript吐槽:别再让你的代码变成类型地狱!
  • Perl hash $key, $value loop: while(my ($key, $value) = (each %items))
  • 抖音无水印视频批量下载完整指南:3分钟学会免费下载神器
  • jEasyUI 显示海量数据
  • 永磁同步电机参数辨识全解析:从原理到代码实现
  • 智能对话式开发:通过快马平台AI模型将你的想法直接变为cloud code应用
  • 革新性英雄联盟智能助手:League-Toolkit重新定义游戏体验
  • 通过“运行规程”智能体,让 RAG 秒变监盘专家!
  • 2025届学术党必备的六大AI科研工具推荐榜单
  • 前端CSS预处理器吐槽:别再让你的样式变成面条!
  • 基于Yolov5的钢轨表面缺陷检测:数据集与含训练好的模型
  • Teamspeak服务器搭建、绑定域名、迁移
  • Matlab仿真研究:三机并联风光混合储能并网系统的建模与控制策略实现
  • 前端测试吐槽:别再让你的代码裸奔!
  • 针对中小企业的轻量化号码认证方案:高性价比平台推荐 - 企业服务推荐
  • 火电行业低成本私有化 RAG 部署
  • MATLAB频谱分析:从fft到fftshift的实战解读
  • 智能窗口管理工具:Boss-Key的高效应用指南