news 2026/10/5 11:54:33

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

作者头像

张小明

前端开发工程师

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/10/4 22:16:52

二维码QRCode的属性

TQRCode组件生成二维码的核心属性配置&#xff0c;TQRCode是 Delphi 中常用的二维码生成组件&#xff08;多为第三方 / QRCode 库封装&#xff09;&#xff0c;以下逐一解析每个属性的功能、取值规则和实际应用场景&#xff1a; 一、核心属性解析 属性名代码赋值功能详解取值…

作者头像 李华
网站建设 2026/10/5 0:09:30

LobeChat知乎内容分发策略

LobeChat在知乎内容生态中的智能生成与分发实践 当知乎上一个关于“2024年大模型技术趋势”的提问悄然登上热榜&#xff0c;却迟迟没有高质量回答时&#xff0c;背后可能正有一套自动化系统在悄然运转——它监听话题热度、调用AI模型检索最新论文、整合权威观点&#xff0c;并在…

作者头像 李华
网站建设 2026/10/5 11:48:10

FCC认证是否有有效期?有哪些认证方式?需要审厂吗?

FCC 认证的有效期、认证方式与审厂要求&#xff0c;会根据认证的类型&#xff08;FCC ID/SDoC&#xff09;有明确区别&#xff0c;以下是详细说明&#xff1a;有效期规则FCC 认证本身没有固定的有效期限制&#xff0c;但是会受两个因素影响有效性&#xff1a;产品的设计变更&am…

作者头像 李华
网站建设 2026/10/3 20:29:17

电池做CE认证的流程是怎样的?

依据欧盟新电池法规&#xff08;EU&#xff09;2023/1542&#xff0c;电池 CE 认证需覆盖安全、环保等多维度合规要求&#xff0c;流程清晰且环节明确&#xff0c;具体步骤如下&#xff1a;前期规划与资料准备确定合规标准&#xff1a;先明确电池对应的适用标准&#xff0c;比如…

作者头像 李华
网站建设 2026/10/4 19:07:59

LobeChat 360搜索推广策略

LobeChat&#xff1a;构建私有化AI交互入口的技术实践 在生成式AI浪潮席卷各行各业的今天&#xff0c;一个现实问题摆在开发者和企业面前&#xff1a;如何在享受大语言模型强大能力的同时&#xff0c;不牺牲数据安全与系统可控性&#xff1f;市面上的主流对话产品虽然体验流畅&…

作者头像 李华