给定数组 people 。people[i]表示第 i 个人的体重 ,船的数量不限,每艘船可以承载的最大重量为 limit。
每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit。
返回 承载所有人所需的最小船数 。
这里有一个条件,每艘船最多同时载两人,就变简单了。我考虑了载一个最重和最轻的人,然后还可以加一个稍微轻点的的人,这里就不用考虑这种情况了。
只需要考虑最重和最轻的搭配,如果加起来超过了限制,只能最重的单独一艘船。
**完整代码 **
class Solution {
public int numRescueBoats(int[] people, int limit) {
int ans = 0;
Arrays.sort(people);
int light = 0, heavy = people.length - 1;
while (light <= heavy) {
if (people[light] + people[heavy] <= limit) {
++light;
}
--heavy;
++ans;
}
return ans;
}
}