AlgoLounge

Boats to Save People

medium

You are given an integer array people where people[i] is the weight of the i-th 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.

Examples

Example 1

Input:  people = [1,2], limit = 3
Output: 1

1 boat (1, 2)

Example 2

Input:  people = [3,2,2,1], limit = 3
Output: 3

3 boats (1, 2), (2) and (3)

Example 3

Input:  people = [3,5,3,4], limit = 5
Output: 4

4 boats (3), (3), (4), (5)

Constraints

  • 1 <= people.length <= 5 * 10^4
  • 1 <= people[i] <= limit <= 3 * 10^4
TypeScript
Loading editor…
List of test cases (12)
Case 1
people = [1,2]
limit = 3
Case 2
people = [3,2,2,1]
limit = 3
Case 3
people = [3,5,3,4]
limit = 5
Case 4
people = [5,1,4,2]
limit = 6
Case 5
people = [1,3,2,3,2]
limit = 3
Case 6
people = [1]
limit = 2
Case 7
people = [5,5,5,5]
limit = 5
Case 8
people = [1,2,3,4,5]
limit = 5
Case 9
people = [1,1,1,1,1,1]
limit = 5
Case 10
people = [10,20,30]
limit = 30
Case 11
people = [44,10,29,12,49,41,23,5]
limit = 50
Case 12
people = [2,49,10,7,11,41,47,2,22,6,13,12,33,18,10,26,2,6,50,10]
limit = 50