Day37 贪心算法part04

LC860柠檬水找零(未掌握)

  1. 未掌握分析:20的时候找零卡住,同时贪心思路就想了很久
    • 当billi=20的时候,我们有两种找零范式,找零10、5和找零三个5,优先找零10、5,因为三个5是可以替代10、5的情况的,我们需要留着三个5防备其他情况。
  2. 代码

LC406根据身高重建队列(未掌握)

  1. 两个维度的题目,与LC135分糖果一样,一定要先确定一个维度,再确定另一个维度。如果两个维度一起考虑一定会顾此失彼。
  2. 如果是先按照K从小到大排序,可以发现K维度和h维度哪个都没有确定下来,与思想违背,因为先确定h再确定k
  3. h从大到小排(h相同的话则k小的站前面),让高个子在前面
  4. 只需要按照k为下标重新插入队列,因为身高是按照高到低排序的,因此可以保证下标k之前一定有个k(0-k-1)个人身高大于或者等于k处的身高
  5. ==使用lambda函数完成数组的排序,需要熟悉这种写法(a,b)->{if(a0b0) return a1-b1;else return b0-a0;}
  6. 向list的指定位置插入元素的方法:add(index,value)
  7. list转换为数组list.toArray(new intnums.length);
  8. 代码

LC452用最少数量的箭引爆气球(未掌握)

  1. 最初的思考是把数组看作是一段范围,只要范围重合了一个箭就可以解决,但是思路是有问题的,因为三个数组不一定全部都有重叠部分,可能是两两重叠两两重叠(此时需要两个箭,但是只计数了1),原本的想法只统计了孤立的范围的个数,但是却并不是结果数
  2. 算法的思路:当气球出现重叠,一起射,所用弓箭最少
    • 为了让气球尽可能的重叠,需要对数组进行排序
    • 如果气球重叠了,重叠气球中右边边界的最小值之前的区间一定需要一个弓箭
    • 代码思路即每次都取重叠范围的最小右边界,如果不重叠就result++
  3. 代码
    数组排序出错?待解释

    \[-2147483646,-2147483645\],\[2147483646,2147483647\]\]-》\[\[2147483646,2147483647\],\[-2147483646,-2147483645\]


相关推荐
高亦真16 分钟前
今天是学习嵌入式的第37天
linux·学习·算法
罗西的思考2 小时前
[Agent Memory / 强化学习] MemPO源码学习笔记 --- (2)--- 训练
人工智能·算法·机器学习
深圳市方中禾科技3 小时前
FZH1625 LCD 驱动芯片深度评测与实战指南
算法·led
我不会起名字3224 小时前
一天一道算法题(34):回溯法的经典例题(子集)
java·数据结构·python·算法·golang·深度优先·力扣
huang5791476 小时前
哈希算法的抗碰撞机制与安全性增强策略4
算法
林浩杨_6 小时前
SIGIR 2026|南京大学:Video-GAR:“通过生成 Query 来验证视频语义理解”的生成增强范式
论文阅读·人工智能·算法
Elsa️7466 小时前
算法一周刷题总结
c++·算法
小小程序猴17 小时前
深圳乘路资讯AI培训怎么样?课程靠谱吗?——一套课程可信度评估模型与实证分析
人工智能·算法
云上先途7 小时前
标签化服务适合哪些人?常见适用场景一次讲清
大数据·人工智能·算法·音视频
彧azz7 小时前
DFS与BFS:图遍历的两大核心算法
数据结构·学习·算法·深度优先·广度优先