news 2026/6/10 13:12:53

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

作者头像

张小明

前端开发工程师

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/6/9 23:50:23

基于大数据+spark+SpringBoot的农产品物流配送和库存优化系统设计与实现

前言 &#x1f31e;博主介绍&#xff1a;✌CSDN特邀作者、全栈领域优质创作者、10年IT从业经验、码云/掘金/知乎/B站/华为云/阿里云等平台优质作者、专注于Java、小程序/APP、python、大数据等技术领域和毕业项目实战&#xff0c;以及程序定制化开发、文档编写、答疑辅导等。✌…

作者头像 李华
网站建设 2026/6/10 9:45:07

LobeChat支持Markdown输出吗?代码展示效果实测

LobeChat 的 Markdown 输出能力深度解析&#xff1a;代码展示效果实测 在如今 AI 聊天应用遍地开花的时代&#xff0c;一个看似基础却至关重要的问题常常被忽视&#xff1a;这个界面能不能好好显示我需要的格式&#xff1f; 尤其是当用户希望用 AI 辅助编程、撰写技术文档或分享…

作者头像 李华
网站建设 2026/6/10 11:03:37

最佳入睡时间计算器,自己开发的一个小工具

网站介绍 最近开发了一个工具&#xff0c;用于计算最佳入睡时间。并发布在了我的网站&#xff1a;最佳入睡时间计算器 - war的小站 。 该工具主要功能就是按照你想起床的时间&#xff0c;并根据睡眠时长推荐最佳入睡时间。 为了制作这个网站&#xff0c;我还去查了卫健委的相…

作者头像 李华
网站建设 2026/6/10 12:47:45

语音转文字再回复:LobeChat全流程语音交互演示

语音转文字再回复&#xff1a;LobeChat全流程语音交互深度解析 在驾驶途中想查询天气&#xff0c;在厨房忙着切菜时需要确认菜谱&#xff0c;或是为家中长辈搭建一个“会说话”的智能助手——这些场景都有一个共同点&#xff1a;用户无法或不愿打字。而真正理想的AI交互&#…

作者头像 李华
网站建设 2026/6/10 12:53:32

【科研绘图系列】R语言绘制多种类型图形(heatmap boxplot linechart)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍 加载R包 数据下载 导入数据 数据预处理 画图 其他画图 总结 系统信息 介绍 这幅图的故事从“日本儿童 RSV 肺炎”开始。RSV(呼吸道合胞病毒)是冬春时节把婴儿送进医院的头号元…

作者头像 李华