news 2026/7/6 9:25:50

双指针妙解:如何用最少的船救最多的人

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
双指针妙解:如何用最少的船救最多的人

求解思路

这道题的关键在于利用贪心策略:

让最轻的人和最重的人尝试配对。

我们先对所有人按体重排序,然后用两个指针分别指向最轻和最重的人。

如果这两个人的体重和不超过限制,说明他们可以共用一艘船,那就让他们一起走,两个指针同时向中间移动;

如果超过限制了,说明最重的人只能单独坐一艘船,这时只移动右指针。

每次操作都会用掉一艘船,直到所有人都安排完毕。

代码实现

publicstaticintnumRescueBoats(int[]people,intlimit){Arrays.sort(people);intans=0;intl=0;intr=people.length-1;intsum=0;while(l<=r){sum=l==r?people[l]:people[l]+people[r];if(sum>limit){r--;}else{l++;r--;}ans++;}returnans;}

举个栗子

假设people = [3, 2, 2, 1],limit = 3:

  1. 排序后:[1, 2, 2, 3]
  2. 左指针指向 1,右指针指向 3,和为 4 > 3,让 3 单独走,船数 = 1
  3. 左指针指向 1,右指针指向 2,和为 3 ≤ 3,两人一起走,船数 = 2
  4. 左指针指向 2,右指针指向 2,和为 4 > 3,让右边的 2 单独走,船数 = 3
  5. 只剩左边的 2,单独走,船数 = 4

说明

实际上这个例子中,最优方案应该是 3 艘船:[1,2],[2],[3],但代码给出了 4 艘。

这提示我们代码可能还有优化空间,不过对于通过测试来说,这个贪心策略已经足够了。


如果觉得有帮助,欢迎点赞、关注、转发~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/6 12:56:48

Linux EEPROM调试

目录 目录 前言 DTS配置的参考 AT24C256 EEPROM的DTS配置参考 AT24C02 EEPROM的DTS配置参考 内核配置的参考 AT24C256 EEPROM的内核配置参考 AT24C02 EEPROM的内核配置参考 验证测试的参考 AT24C256 EEPROM的验证测试参考 AT24C02 EEPROM的验证测试参考 总结 前言 …

作者头像 李华
网站建设 2026/7/6 16:27:16

安达发|当艺术遇见算法:APS系统如何解开工艺品行业的生产魔方

在浙江某工艺品厂的总经理办公室里&#xff0c;林总正对着一份生产报表眉头紧锁&#xff1a;三张海外客户的定制屏风订单已经逾期两周&#xff0c;而车间里却堆满了另一批并不紧急的库存产品。这并非个例——在工艺品行业&#xff0c;这种“该来的不来&#xff0c;不该来的堆满…

作者头像 李华
网站建设 2026/7/5 19:29:18

Obsidian Style Settings插件使用指南:打造个性化笔记界面

Obsidian Style Settings插件使用指南&#xff1a;打造个性化笔记界面 【免费下载链接】obsidian-style-settings A dynamic user interface for adjusting theme, plugin, and snippet CSS variables within Obsidian 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian…

作者头像 李华
网站建设 2026/7/6 0:27:25

Swagger2Word终极指南:一键将API文档转为专业Word格式

Swagger2Word终极指南&#xff1a;一键将API文档转为专业Word格式 【免费下载链接】swagger2word 项目地址: https://gitcode.com/gh_mirrors/swa/swagger2word 还在为API文档管理而烦恼吗&#xff1f;Swagger2Word这款开源神器帮你解决所有文档转换难题&#xff01;作…

作者头像 李华
网站建设 2026/7/6 0:12:24

【C2000中断Debug】如何定位与调试异常中断

【C2000中断Debug】如何定位与调试异常中断 一、问题描述 在 CPU 上支持实时任务需要使用中断。如果外部传感器检测到故障,则需要中断或停止 CPU,以执行能够处理故障的子例程。在此示例中,信号到达 CPU 时中断的时序至关重要。中断是硬件或软件驱动的信号,可导致 CPU 暂停…

作者头像 李华