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

面试 TOP101 贪心专题题解汇总Java版(BM95 —— BM96)

贪心算法

题号题目名称核心思路时间复杂度空间复杂度代码亮点牛客原题链接
BM95分糖果问题两次贪心扫描:先左→右,再右→左O(n)O(n)无需回溯,两次线性遍历即可满足相邻与高分的双重约束🔗 直达
BM96主持人调度(二)贪心 + 双指针(或最小堆)O(n log n)O(n)将起止时间拆开排序,扫描线思想;堆写法更直观🔗 直达

✅ 复习顺序建议(由易到难)

BM95 → BM96

BM95 分糖果问题

分糖果问题_牛客题霸_牛客网
https://www.nowcoder.com/practice/76039109dd0b47e994c08d8319faa352?tpId=295&tags=&title=&difficulty=0&judgeStatus=0&rp=0&sourceUrl=%2Fexam%2Foj

import java.util.*;public class Solution {public int candy(int[] arr) {int n = arr.length;                 // 1. 获取孩子数量if (n <= 1) return n;               // 2. 只有一个孩子直接返回 1int[] ans = new int[n];             // 3. 每个孩子糖果数Arrays.fill(ans, 1);                // 4. 初始每人 1 颗// 5. 从左到右:右邻居高则多给 1for (int i = 1; i < n; i++) {if (arr[i] > arr[i - 1]) ans[i] = ans[i - 1] + 1;}// 6. 从右到左:左邻居高且糖果不足则补for (int i = n - 2; i >= 0; i--) {if (arr[i] > arr[i + 1] && ans[i] <= ans[i + 1])ans[i] = ans[i + 1] + 1;}return Arrays.stream(ans).sum();    // 7. 返回糖果总数}
}

BM96 主持人调度(二)

主持人调度(二)_牛客题霸_牛客网
https://www.nowcoder.com/practice/4edf6e6d01554870a12f218c94e8a299?tpId=295&tags=&title=&difficulty=0&judgeStatus=0&rp=0&sourceUrl=%2Fexam%2Foj

  1. 分开排序 + 计算区间的个数
import java.util.*;public class Solution {public int minmumNumberOfHost(int n, int[][] startEnd) {int[] st = new int[n];           // 1. 存储所有会议开始时间int[] ed = new int[n];           // 2. 存储所有会议结束时间for (int i = 0; i < n; i++) {    // 3. 拆分输入数组到 st[] 和 ed[]st[i] = startEnd[i][0];ed[i] = startEnd[i][1];}Arrays.sort(st);                 // 4. 升序排序开始时间Arrays.sort(ed);                 // 5. 升序排序结束时间int res = 0;                     // 6. 所需最少主持人数量int j = 0;                       // 7. 指向最早结束的会议for (int i = 0; i < n; i++) {    // 8. 遍历所有开始时间if (st[i] >= ed[j]) {        // 9. 当前会议开始前已有会议结束,主持人可复用j++;                     // 10. 释放该主持人} else {                     // 11. 无空闲主持人,需新增res++;}}return res;                      // 12. 返回结果}
}
  1. 重载排序+大顶堆
import java.util.*;public class Solution {public int minmumNumberOfHost (int n, int[][] startEnd) {Arrays.sort(startEnd, new Comparator<int[]>() { // 1. 按会议开始时间升序排序public int compare(int[] o1, int[] o2) {     // 2. 自定义比较器return Integer.compare(o1[0], o2[0]);    // 3. 比较会议的开始时间}});PriorityQueue<Integer> pq = new PriorityQueue<>(); // 4. 创建小顶堆,记录各会议室的最早释放时间pq.offer(Integer.MIN_VALUE);                       // 5. 先放入哨兵值,避免首次 poll 时空指针for (int i = 0; i < n; i++) {                      // 6. 遍历每场会议if (pq.peek() <= startEnd[i][0]) {             // 7. 最早结束的会议室已空闲,复用该主持人pq.poll();                                 // 8. 弹出该释放时间}pq.offer(startEnd[i][1]);                      // 9. 把当前会议的结束时间压入堆}return pq.size();                                  // 10. 堆大小即为所需最少主持人数量}
}

文章转载自:

http://IHaVciLX.rsffn.cn
http://l04Frzqg.rsffn.cn
http://OL3Onl33.rsffn.cn
http://4u8tE7ST.rsffn.cn
http://zpuyiOzA.rsffn.cn
http://CKoefPiR.rsffn.cn
http://YfNgsyOq.rsffn.cn
http://k4ua8oZk.rsffn.cn
http://rJw3ZxQO.rsffn.cn
http://oAIxV2Lt.rsffn.cn
http://p6XeUBXw.rsffn.cn
http://0JTa7fey.rsffn.cn
http://st2fGIbn.rsffn.cn
http://gwXs7y1J.rsffn.cn
http://LzRV8lgs.rsffn.cn
http://YjPmnmr4.rsffn.cn
http://7fnj3SP5.rsffn.cn
http://It2oWvAi.rsffn.cn
http://Qxo1B03G.rsffn.cn
http://6QZ1RuoL.rsffn.cn
http://haANl5vS.rsffn.cn
http://d1TRiQSf.rsffn.cn
http://7EbMZqBB.rsffn.cn
http://JvD7qFtQ.rsffn.cn
http://f8FUktRx.rsffn.cn
http://q3wmTTo1.rsffn.cn
http://Mf8cgc2Z.rsffn.cn
http://ahcoCRLM.rsffn.cn
http://yIPuzmAO.rsffn.cn
http://KteEZym5.rsffn.cn
http://www.dtcms.com/a/368314.html

相关文章:

  • 软件启动时加配置文件 vs 不加配置文件
  • 工业跨网段通信解决方案:SG-NAT-410 网关,无需改参数,轻松打通异构 IP 网络
  • Elasticsearch-java 使用例子
  • 我改写的二分法XML转CSV文件程序速度追上了张泽鹏先生的
  • GPU测速方法
  • OpenCV C++ 色彩空间详解:转换、应用与 LUT 技术
  • 前端笔记2025
  • 跨境电商:如何提高电商平台数据抓取效率?
  • python + Flask模块学习 2 接收用户请求并返回json数据
  • K8S-Pod(上)
  • 【代码随想录day 23】 力扣 93.复原IP地址
  • 数据结构:栈和队列(下)
  • SAP官方授权供应商名单2025
  • 结构体简介
  • UE4 Mac构建编译报错 no template named “is_void_v” in namespace “std”
  • 嵌入式系统学习Day30(udp)
  • 【Linux】Linux进程状态和僵尸进程:一篇看懂“进程在忙啥”
  • 理解UE4中C++17的...符号及enable_if_t的用法及SFINAE思想
  • 某头部能源集团“数据治理”到“数智应用”跃迁案例剖析
  • 阿里云服务器配置ssl-docker nginx
  • 2025年COR SCI2区,基于近似细胞分解的能源高效无人机路径规划问题用于地质灾害监测,深度解析+性能实测
  • 实战案例:数字孪生+可视化大屏,如何高效管理智慧能源园区?
  • 容器的定义及工作原理
  • 【Python - 类库 - BeautifulSoup】(01)“BeautifulSoup“使用示例
  • 神经网络之深入理解偏置
  • 三、神经网络
  • 仓颉编程语言青少年基础教程:布尔类型、元组类型
  • UC Berkeley 开源大世界模型(LWM):多模态大模型领域世界模型技术新进展
  • 一次由CellStyle.hashCode值不一致引发的HashMap.get返回null问题排查
  • 【Java鱼皮】智能协同云图库项目梳理