881. Boats to Save People
LeetCode 881. Boats to Save People
Description
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 1:
Example 2:
Example 3:
Constraints:
1 <= people.length <= 5 * 104
1 <= people[i] <= limit <= 3 * 104
Tags
Two Pointers, Greedy
Solution
Sort the given array and assign two pointers (due to the capacity) at both ends of it. If the sum of both people's weight makes the overload of a boat, meaning that only the heavier person can be loaded on the boat, we only move the right pointer towarding to center and increase the result by 1. Otherwise, we also move the left pointer because this person can also be fitted into the boat. When two pointers overlap with each other, we also add 1 onto the result.
Complexity
Time complexity: , which depends on the sort algorithm;
Space complexity: , which depends on the sort algorithm.
Code
Last updated
Was this helpful?