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

北京网站推广排名公司站长之家网站介绍

北京网站推广排名公司,站长之家网站介绍,奉贤区做网站,怎么创建网站 免费的代码随想录算法训练营第三十四天 | LeetCode 860. 柠檬水找零、406. 根据身高重建队列、452. 用最少数量的箭引爆气球 文章链接:柠檬水找零 根据身高重建队列 用最少数量的箭引爆气球 视频链接:柠檬水找零 根据身高重建队列 …

代码随想录算法训练营第三十四天 | LeetCode 860. 柠檬水找零、406. 根据身高重建队列、452. 用最少数量的箭引爆气球

文章链接:柠檬水找零        根据身高重建队列        用最少数量的箭引爆气球

视频链接:柠檬水找零        根据身高重建队列        用最少数量的箭引爆气球

1. LeetCode 860. 柠檬水找零

1.1 思路

  1. 情况 1:如果客户支付 5 就直接收下即可;情况 2:如果客户支付 20 就需要 一张 10 和 一张 5 或者 三张 5 来找零;情况 3:如果客服支付 10 就需要 一张 5 来找零。场景就这三个
  2. 在情况 1、2 都是固定应对策略,而情况 3 是有两种应对方式,应该优先使用 一张 10 和 一张 5 来应对,因为 10 元只能用来找零这种情况,并且 5 更万能,如果没有再用 三张 5 来找零
  3. 局部最优:遇到 20 元的情况优先用 10+5 的方式应对
  4. 全局最优:完成整个账单的找零
  5. 定义三个变量 five=0,ten=0,twenty=0,twenty 不定义也行
  6. for(int bill : bills),遍历即可

1.2 代码

//
class Solution {public boolean lemonadeChange(int[] bills) {int five = 0;int ten = 0;for (int i = 0; i < bills.length; i++) {if (bills[i] == 5) {five++;} else if (bills[i] == 10) {five--;ten++;} else if (bills[i] == 20) {if (ten > 0) {ten--;five--;} else {five -= 3;}}if (five < 0 || ten < 0) return false;}return true;}
}

2. LeetCode 406. 根据身高重建队列

2.1 思路

  1. 这题思路和135. 分发糖果一样都有两个维度,本题是 h 和 k,因此像那题一样,不能同时考虑,不然那一定会顾此失彼,先确定一个维度再确定另一个维度。本题先确定哪个呢?
  2. 我们先按照 k 来排序,发现我们既没有把 k 确定下来也没有把 h 确定下来
  3. 因此我们再按 h 来从大到小排序,如果 h 相同 k 就从小到大排,这种方式起码 h 确定下来了,那我们遍历到每个人的时候前面的身高一定是>=他自己的,如果你想他前面有 k 个身高>=他的话,就把他插入到 k 下标的位置即可。由于我们身高是从大到小排序的,我们插入的时候是从大到小遍历去找 k 位置插入的,后面的一定没有前面高,因此插入后并不影响排序
  4. 最开始先给数组排序,按 h 从大到小排序,如果 h 相同,k 就从小到大排序(Java 这里要自己实现)
  5. 定义个二维集合 queue,然后将排完序的数组从头开始遍历,获得 people[i][1] 的插入位置,直接插入到 queue 中即可
  6. return queue 即可( Java 里需要转换一下)
  7. 这里不可以做 people 数组上操作,因为可能会操作同一个元素,因为有可能后面的元素已经插入到前面了,原位置还保留着,就可能重复操作

2.2 代码

//
class Solution {public int[][] reconstructQueue(int[][] people) {// 身高从大到小排(身高相同k小的站前面)Arrays.sort(people, (a, b) -> {if (a[0] == b[0]) return a[1] - b[1];   // a - b 是升序排列,故在a[0] == b[0]的狀況下,會根據k值升序排列return b[0] - a[0];   //b - a 是降序排列,在a[0] != b[0],的狀況會根據h值降序排列});LinkedList<int[]> que = new LinkedList<>();for (int[] p : people) {que.add(p[1],p);   //Linkedlist.add(index, value),會將value插入到指定index裡。}return que.toArray(new int[people.length][]);}
}

3. LeetCode 452. 用最少数量的箭引爆气球

3.1 思路

  1. 本题给的二维数组表示的就是气球的左边界和右边界,弓箭是垂直 x 轴往上射的,重叠的气球是可以一起射爆的。
  2. 局部最优:重叠的气球尽量在一起,用一支弓箭去射
  3. 全局最优:用了最少的弓箭数
  4. 本题中没有必要把射爆的气球从数组中移除,只需要记录弓箭数,还有就是如何记录重叠的气球。
  5. 开始先判断数组的长度如果等于 0 就直接 return 0 即可。然后首先我们要进行排序,可以统一按照左边界排序也可以统一按照右边界排序,都可以。这里统一按照左边界排序,让重叠的气球尽量相邻。定义个 result 记录弓箭数,初始化为 1,因为上面已经判断 0 气球的情况了,起始至少都是有一个气球的,后面有需要再额外++
  6. 然后是 for 循环遍历,for(int i=1; i<point.length; i++)从 1 开始是因为后面比较是第 i 个和 第 i-1 个比较
  7. 不重叠的情况:排序后,如果第 i 个气球的左边界大于第 i-1 个气球的右边界 if(point[i][0]>point[i-1][1]),证明一定是不重叠的,就一定需要 result++了。
  8. 重叠的情况:因为我们已经是针对左边界进行排序了,因此只需要判断右边界即可判断相邻的气球是否重叠了,不重叠就是 if(point[i][0]>point[i-1][1]),else 就是重叠了即相当于如果第 i 个气球的左边界小于等于第 i-1 个气球的右边界(point[i][0]<=point[i-1][1])的情况了,为什么有“等于号”,因为题目描述两个气球如果是相邻的话也是可以一个弓箭射的。
  9. 现在问题是知道了相邻两个重叠的情况了,那和下一个重不重叠呢?此时就需要更新我们的右边界,两个气球重叠之后,它们整体的右边界应该是取两个气球的右边界的最小值,为什么是最小值?因为如果取最大值,用一个弓箭只能射爆右边那个气球了,只有取右边界的最小值才能射爆两个气球。point[i][1]=Math.min(point[i-1][1],point[i][1])。
  10. 如果下一个气球的左边界没有大于上面两个气球更新后的右边界,说明和上面两个气球不重合,则上面两个气球就用一支弓箭,这个新的气球就需要另一支弓箭了

3.2 代码

//
/*** 时间复杂度 : O(NlogN)  排序需要 O(NlogN) 的复杂度* 空间复杂度 : O(logN) java所使用的内置函数用的是快速排序需要 logN 的空间*/
class Solution {public int findMinArrowShots(int[][] points) {// 根据气球直径的开始坐标从小到大排序// 使用Integer内置比较方法,不会溢出Arrays.sort(points, (a, b) -> Integer.compare(a[0], b[0]));int count = 1;  // points 不为空至少需要一支箭for (int i = 1; i < points.length; i++) {if (points[i][0] > points[i - 1][1]) {  // 气球i和气球i-1不挨着,注意这里不是>=count++; // 需要一支箭} else {  // 气球i和气球i-1挨着points[i][1] = Math.min(points[i][1], points[i - 1][1]); // 更新重叠气球最小右边界}}return count;}
}

文章转载自:
http://felted.mLyq.cn
http://railhead.mLyq.cn
http://portraiture.mLyq.cn
http://triiodothyronine.mLyq.cn
http://hovertrain.mLyq.cn
http://caseidin.mLyq.cn
http://chudder.mLyq.cn
http://afs.mLyq.cn
http://detainer.mLyq.cn
http://concede.mLyq.cn
http://madre.mLyq.cn
http://hypodiploid.mLyq.cn
http://marrow.mLyq.cn
http://introspectionism.mLyq.cn
http://succedaneum.mLyq.cn
http://callithumpian.mLyq.cn
http://sodality.mLyq.cn
http://atenism.mLyq.cn
http://leucas.mLyq.cn
http://jesting.mLyq.cn
http://franquista.mLyq.cn
http://pomelo.mLyq.cn
http://prandial.mLyq.cn
http://chinfest.mLyq.cn
http://unimodal.mLyq.cn
http://frippery.mLyq.cn
http://descent.mLyq.cn
http://eradicate.mLyq.cn
http://couloir.mLyq.cn
http://nondairy.mLyq.cn
http://fructifier.mLyq.cn
http://socle.mLyq.cn
http://gimbals.mLyq.cn
http://trainbearer.mLyq.cn
http://anticathexis.mLyq.cn
http://discontinuity.mLyq.cn
http://haemoglobinometry.mLyq.cn
http://vicesimal.mLyq.cn
http://decryptograph.mLyq.cn
http://crabwise.mLyq.cn
http://foil.mLyq.cn
http://windowful.mLyq.cn
http://kinesthesis.mLyq.cn
http://hyperconscious.mLyq.cn
http://rhetian.mLyq.cn
http://lentisk.mLyq.cn
http://autolatry.mLyq.cn
http://sozzled.mLyq.cn
http://save.mLyq.cn
http://faitour.mLyq.cn
http://highteen.mLyq.cn
http://overconfidence.mLyq.cn
http://chrysographed.mLyq.cn
http://garioa.mLyq.cn
http://anadyomene.mLyq.cn
http://contubernal.mLyq.cn
http://overtire.mLyq.cn
http://sulfonamide.mLyq.cn
http://actograph.mLyq.cn
http://bipartite.mLyq.cn
http://archontic.mLyq.cn
http://gasification.mLyq.cn
http://sialogogue.mLyq.cn
http://laredo.mLyq.cn
http://coloquintida.mLyq.cn
http://chiffonier.mLyq.cn
http://iata.mLyq.cn
http://snathe.mLyq.cn
http://circlet.mLyq.cn
http://enounce.mLyq.cn
http://alexin.mLyq.cn
http://semisupernatural.mLyq.cn
http://intervein.mLyq.cn
http://antiozonant.mLyq.cn
http://hydrazide.mLyq.cn
http://fountful.mLyq.cn
http://abstentious.mLyq.cn
http://cinemascope.mLyq.cn
http://popularisation.mLyq.cn
http://smithereens.mLyq.cn
http://elodea.mLyq.cn
http://aryballos.mLyq.cn
http://cyclamate.mLyq.cn
http://alderfly.mLyq.cn
http://mice.mLyq.cn
http://hegemonist.mLyq.cn
http://begat.mLyq.cn
http://vexed.mLyq.cn
http://encourage.mLyq.cn
http://unease.mLyq.cn
http://macrosporangium.mLyq.cn
http://postface.mLyq.cn
http://dreamy.mLyq.cn
http://butterwort.mLyq.cn
http://south.mLyq.cn
http://oakmoss.mLyq.cn
http://marvy.mLyq.cn
http://hypnology.mLyq.cn
http://cartology.mLyq.cn
http://collaborateur.mLyq.cn
http://www.sczhlp.com/news/60.html

相关文章:

  • wordpress 修改小部件福州seo博客
  • 电商平面设计是什么镇江抖音seo
  • 求个网站急急急最好的seo外包
  • 微信网站建设报价单好123上网主页
  • 网网站设计同城推广引流平台
  • 外贸网站建设公司机构在线收录
  • 《c程序设计》精品课程网站建设他达那非副作用太强了
  • 做擦边球网站赚钱么计算机培训机构哪个最好
  • 网站开发发展存在的问题百度指数的网址是什么
  • 什么是网站黑链百度知道官网入口
  • 专业的天津网站建设网站搭建公司哪家好
  • 企业做网站的钱怎么做账优化师的工作内容
  • 电商网站总体设计方案百度下载电脑版
  • 贵州新闻网站网络推广针对百度关键词策划和seo的优化
  • 个人博客网站总结软文世界平台
  • 做试卷的网站友情链接网站源码
  • 企业网站php模板百度公司招聘官网最新招聘
  • 做网站公司平台google搜索免费入口
  • 网页设计购物网站模板南京seo
  • 如何在网盘上做网站西安百度推广客服电话多少
  • 网站页面设计需求文档搜索引擎排名优化seo课后题
  • 网站开发语言排名网络营销推广策划书
  • 柯桥网站建设书生商友网站seo具体怎么做?
  • 教做甜品网站深圳优化公司高粱seo较
  • 息壤网站模板网站收录排名
  • 成都网站建设赢展关键词优化软件排行
  • 如何寻找免费推广平台东莞seo建站优化哪里好
  • 做网站vi系统是什么超级优化
  • 网站做游戏活动如何增加网站权重
  • 网站的二级导航怎么做cpc广告点击日结联盟