You are given an array people
where people[i]
is the weight of the ith
person, and an infinite number of boats where each boat can carry a maximum weight of limit
. Each boat carries at most two people at the same time, provided the sum of the weight of those people is at most limit
.
Return the minimum number of boats to carry every given person.
Example
Input: people = [1,2], limit = 3
Output: 1
Explanation: 1 boat (1, 2)
Solution
/**
* @param {number[]} people
* @param {number} limit
* @return {number}
*/
var numRescueBoats = function (people, limit) {
//Sort people
people.sort((a, b) => a - b);
//Initialize res
let res = 0;
//For people.length check if the sum of the first and last person is greater than limit
for (let i = 0, j = people.length - 1; i <= j; j--) {
//If the sum is greater than limit, then we need to increase the boat
if (people[i] + people[j] > limit) res++;
//Else we can reduce the boat
else {
res++;
i++;
}
}
//Return res
return res;
};