救生艇(力扣)贪心 JAVA

给定数组 people 。peoplei表示第 i 个人的体重 ,船的数量不限,每艘船可以承载的最大重量为 limit。

每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit。

返回 承载所有人所需的最小船数 。

示例 1:

输入:people = 1,2, limit = 3

输出:1

解释:1 艘船载 (1, 2)

示例 2:

输入:people = 3,2,2,1, limit = 3

输出:3

解释:3 艘船分别载 (1, 2), (2) 和 (3)

示例 3:

输入:people = 3,5,3,4, limit = 5

输出:4

解释:4 艘船分别载 (3), (3), (4), (5)

提示:

1 <= people.length <= 5 * 10^4

1 <= peoplei <= limit <= 3 * 10^4

解题思路:

1、要想船用的少,那就要每只船在限制范围内载的人尽可能的多,这是重点

2、确保每只船尽可能载两个人

3、理论上最胖的人和最瘦的人不能一起乘船那么这个最胖的只能坐一条船,这是一个突破口

4、排序 + 双指针即可

代码:

java 复制代码
class Solution {
    public int numRescueBoats(int[] people, int limit) {
        Arrays.sort(people);
        int left = 0, right = people.length - 1;
        int ans = 0;
        while(left <= right) {
        	if(people[left] + people[right] <= limit) {
        		left ++;
        	}
        	right --;
        	ans ++;
        }
        return ans;
    }
}
相关推荐
天天被压力15 分钟前
【A股分钟级高频数据完全手册 #07】北交所历史分钟K线接口:京市Pro版分时批量
java·人工智能·python
天天被压力21 分钟前
【A股分钟级高频数据完全手册 #08】股票日、分时数据接口对比:普通分时与Pro版差异实测
java·人工智能·python
特立独行的猫A36 分钟前
AI 时代,我为什么推荐用 cj-tauri 开发桌面应用
java·后端·python
金銀銅鐵38 分钟前
从一个类名到一张类图:用反射自动生成 PlantUML
java·后端·uml
严肃小白兔1 小时前
MATLAB 数值计算中的精度与误差问题:浮点运算、误差传播与数值稳定性
人工智能·算法·matlab
nice_lcj5201 小时前
Java 并发容器入门:ConcurrentHashMap、CopyOnWriteArrayList、阻塞队列
java·面试·并发编程·阻塞队列·concurrenthashmap·copyonwritearraylist
微小的鱼1 小时前
Linux的渲染与显示系统链路
android·java·linux
青少儿编程课堂2 小时前
蓝桥杯青少组图形化省考报名倒计时·全国青少年信息素养大赛·电子学会图形化考级:校园黑白棋人机对战解析
c++·python·算法·bfs·信息学竞赛
若亦_2 小时前
Java中关于this的三种用法
java·开发语言·intellij-idea
山甫aa2 小时前
锁一篇搞定:乐观锁、悲观锁、CAS、数据库锁与分布式锁【从零开始的 Web 后端学习】
java·数据库·分布式·后端·学习·web