diff options
author | Jack Sangdahl <[email protected]> | 2025-03-10 00:36:13 -0600 |
---|---|---|
committer | Jack Sangdahl <[email protected]> | 2025-03-10 00:36:13 -0600 |
commit | 7c60dee83b436e8e8a667bf9f191beced8de4fc3 (patch) | |
tree | eb7a24ee2067f92245c57bb118e85a1baf15df50 /other/boats_save_people.cpp | |
parent | 5d7cdc215e4ba1ec4cbb24c084cccb5e5e641468 (diff) | |
download | leetcode-7c60dee83b436e8e8a667bf9f191beced8de4fc3.tar.gz leetcode-7c60dee83b436e8e8a667bf9f191beced8de4fc3.zip |
chore: move cpp and rust code to directory
Diffstat (limited to 'other/boats_save_people.cpp')
-rw-r--r-- | other/boats_save_people.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/other/boats_save_people.cpp b/other/boats_save_people.cpp new file mode 100644 index 0000000..7221191 --- /dev/null +++ b/other/boats_save_people.cpp @@ -0,0 +1,35 @@ +// 881. Boats to Save People +#include "leetcode.h" + +/* + * given an 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 minimum number + * of boats to carry every person + */ + +class Solution { +public: + int numRescueBoats(vector<int> &people, int limit) { + sort(people.begin(), people.end()); + int max_weight = people.size() - 1, min_weight = 0, ans = 0; + while (min_weight <= max_weight) { + if (people[min_weight] + people[max_weight] <= limit) { + min_weight++; + max_weight--; + } else + max_weight--; + ans++; + } + return ans; + } +}; + +int main() { + Solution obj; + vector<int> p1 = {1, 2}, p2 = {3, 2, 2, 1}, p3 = {3, 5, 3, 4}; + printf("%d\n", obj.numRescueBoats(p1, 3)); // expect: 1 + printf("%d\n", obj.numRescueBoats(p2, 3)); // expect: 3 + printf("%d\n", obj.numRescueBoats(p3, 5)); // expect: 4 +} |