LC每日一题|20240610 - 881. 救生艇
给定数组
people。people[i]表示第i个人的体重 ,船的数量不限,每艘船可以承载的最大重量为limit。每艘船最多可同时载两人,但条件是这些人的重量之和最多为
limit。返回 承载所有人所需的最小船数 。
提示:
1 <= people.length <= 5 * 10^41 <= people[i] <= limit <= 3 * 10^4
题目等级:Medium
解题思路
非常简单的一道贪心题~
我们的目标是把没上船的人群中最重的和最轻人放在一起,如果他们的体重和小于 limit ,那么就可以放到同一条船上,否则就只能让更重的人上船。
思路有了,方案就呼之欲出了: 排序 + 双指针
AC代码
class Solution {
fun numRescueBoats(people: IntArray, limit: Int): Int {
people.sort()
var i = 0
var j = people.size - 1
var res = 0
while (i <= j) {
if (people[i] + people[j] <= limit) i++
j--
res++
}
return res
}
}