leetcode-881 救生艇
思路:sort + 双指针;
疑问:就是问什么可以直接选择最小的放入船里面,而不是找到最大容量的情况;因为,船的个人只有2个人,最大重量已经拿出来了,就算能找到一个最合适的重量,那么其他次大重量也是无法达到最优;如果是没有人员限制的话,就是一个背包问题了
int numRescueBoats(vector<int>& people, int limit) {sort(people.begin(), people.end());int left = 0;int right = people.size() - 1;int ans = 0;while (right >= 0 && people[right] == limit) {ans += 1;right -= 1;}while(left < right) {int sum = people[left] + people[right];if (sum <= limit) {ans += 1;left += 1, right -= 1;} else {ans += 1;right -= 1;}}if (left == right) {ans += 1;}return ans;
}
上述代码可进行优化,优化后
int numRescueBoats(vector<int>& people, int limit) {sort(people.begin(), people.end());int left = 0;int right = people.size() - 1;int ans = 0;while(left <= right) {int sum = people[left] + people[right];/合并left == right情况if (sum <= limit) {ans += 1;left += 1, right -= 1;//合并people[right]==limit情况} else {ans += 1;right -= 1;}}return ans;
}
leetcode-881 救生艇相关推荐
- Leetcode 881:救生艇问题
Leetcode 881: 救生艇问题 问题描述: 现在有NNN位乘客被困在一艘即将坠海的遇难船上,其中第iii个乘客的体重记为people[i]. 每艘救生艇能够承载的最大体重为limit. 注意: ...
- LeetCode 881. 救生艇(贪心,双指针)
1. 题目 第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit. 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit. 返回载到每一个人所需的最小船数.( ...
- LeetCode 881. 救生艇
Description 第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit. 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit. 返回载到每一个人所需的 ...
- leetcode 881 救生艇 (python3- 贪心算法)
刷题,遇见救生艇问题,题目如下: 第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit. 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit. 返回载到每一 ...
- LeetCode 881.救生艇
https://leetcode.cn/problems/boats-to-save-people 给定数组 people .people[i]表示第 i 个人的体重 ,船的数量不限,每艘船可以承载的 ...
- LeetCode 881 救生艇
题目描述 解题方法 每次都选择最轻和最重的两个,如果超过,那么最重的单独坐船(船最多载2人) class Solution:def numRescueBoats(self, people: List[ ...
- leetcode每日一题系列——881. 救生艇
881. 救生艇 难度中等166收藏分享切换为英文接收动态反馈 第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit. 每艘船最多可同时载两人,但条件是这些人的重量之和最多 ...
- 881. 救生艇-快速排序加贪心算法
881. 救生艇 给定数组 people .people[i]表示第 i 个人的体重 ,船的数量不限,每艘船可以承载的最大重量为 limit. 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 ...
- 力扣881. 救生艇(贪心,双指针)
881. 救生艇 题目描述: 第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit. 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit. 返回载到每一个人 ...
- [LeetCode javaScript] 881. 救生艇
第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit. 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit. 返回载到每一个人所需的最小船数.(保证每个人都 ...
最新文章
- 【CSS进阶】box-shadow 与 filter:drop-shadow 详解及奇技淫巧
- Codeforces 1176F
- jax-ws和jax-rs_使用JAX-RS和Jetty创建Web服务和Rest Server
- 【qduoj - 142】 多重背包(0-1背包的另类处理,dp)
- TypeError: 'numpy.int64' object is not iterable ,'int' object is not iterable
- android手机可以设置屏幕锁定,安卓手机屏幕锁设置方法(九个点图案)
- mysql 视图 速度慢_mysql 视图查询速度慢
- java简单巡回置换算法程序代码_巡回置换算法(巡回置换算法实现流程)
- centos7---mysql5.7主从复制读写分离
- vSphere 5.5 使用Web Client打开控制台窗口显示连接超时
- c51语言自定义头文件,C51语言头文件包括的内容有
- 【.NET6+WPF】WPF使用prism框架+Unity IOC容器实现MVVM双向绑定和依赖注入
- 用MFC构建HEVC码流播放器
- RuoYi-Vue前端分页
- 抗议浪潮不断,峰会笑声阵阵
- 如何创建苹果开发者个人号账号P8证书
- 有生之年转ta系列 2.6 伽马校正
- Apache POI读合并单元格
- 离DApp的爆发还差什么?|链捕手
- 爱的五种语言:创造完美的两性沟通