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

【LeetCode】每日一题 2024_9_18 坐上公交的最晚时间(排序,模拟)

前言

每天和你一起刷 LeetCode 每日一题~

LeetCode 启动!

题目:坐上公交的最晚时间

代码与解题思路

func latestTimeCatchTheBus(buses []int, passengers []int, capacity int) (ans int) {// 核心思路分析:// 你可以搭乘公交车的最晚到达公交站时间。你 不能 跟别的乘客同时刻到达。// 总结来看就是,需要找最晚的一班车,并且不能和其他乘客同时间到达// 换成解题思路来看,就是找到坐最后一辆公交车的最后一个乘客// 并找到在他之前的一个时间,插队上车,顶掉最后一个乘客// 而:数组 buses 和 passengers 不一定是有序的。那就先排序slices.Sort(buses)slices.Sort(passengers)// 先上车,找到前面说的:倒数第二个乘客 // 这里习惯性用 j 了,那就改成 j 吧j, c := 0, 0 // j 代表第 j 位乘客,c 代表当前巴士还能载客的数量for _, t := range buses { // 枚举巴士到达的时间c = capacity // 每一辆新的巴士就能更新成 capacityfor c > 0 && j < len(passengers) && passengers[j] <= t { // 枚举能做这辆巴士的乘客j++ // 乘客+1c-- // 载客量-1}}// 现在的 p 代表的就是最后一个上车的乘客,c 代表当前巴士的空位if c > 0 { // 如果还有空位ans = buses[len(buses)-1] // 先预设在公交车刚到的时候上车(题目要求:最晚到达公交站时间)j-- // 这里也需要 j--, 否则可能出现数组下标越界问题} else { // 如果坐满了ans = passengers[j-1] // 根据我们的分析,找到:最后一个乘客j-- // 顶掉最后一个乘客}// 找一个和别的乘客不同时刻到达的时间for j >= 0 && ans == passengers[j] {j--ans-- }return ans
}

核心思路如注释

我最开始也没看懂题目在说些什么,写的真的太难懂了

还好在评论区有一位中译中大师,他的翻译如下: 你患有拖延症和社恐,但很不巧的是你今天必须坐公交回家。 所以,你需要在末班车开走之前,尽量晚的时间,并且不与其他乘客同时到达公交站。

对照这个解释,多看几遍题目和样例,终于恍然大悟

视频实况

【【LeetCode】每日一题 2024_9_18 坐上公交的最晚时间(排序,模拟)】

每天进步一点点

可以和我刷一辈子的每日一题吗?
一题一题,积累起来就是一辈子。


http://www.mrgr.cn/news/29402.html

相关文章:

  • 【Python】从基础到进阶(八):文件操作与上下文管理
  • YOLOv9改进策略【损失函数篇】| Shape-IoU:考虑边界框形状和尺度的更精确度量
  • C++入门基础(上)
  • ??Ansible——ad-hoc
  • 活动系统开发之采用设计模式与非设计模式的区别-后台功能总结
  • 函数题 6-9 统计个位数字【PAT】
  • 建立这一新框架以应对人才紧缺时期的敏捷内容运营
  • 论文速递 | 基于MIC-ICEEMD-RIME-DHKELM的碳排放预测模型研究
  • 解决nginx代理SSE接口的响应没有流式返回
  • MUNIK谈ASPICE系列专题分享(一)什么是ASPICE?
  • 农产品交易平台的设计与实现
  • 该州允许AI帮助裁定失业申请
  • linux 内核代码学习(九)--Linux内核启动和文件系统
  • 【工具】Java Excel转图片
  • 基于SpringBoot的在线教育平台的设计与实现
  • 高密原型验证系统解决方案(上篇)
  • 【Elasticsearch系列十一】聚合 DSL API
  • html,css基础知识点笔记(二)
  • UE4_后期处理六—复古电视效果
  • RTX 4090 系列即将停产,RTX 5090 系列蓄势待发