aboutsummaryrefslogtreecommitdiff
path: root/other/boats_save_people.cpp
diff options
context:
space:
mode:
authorJack Sangdahl <[email protected]>2025-03-10 00:36:13 -0600
committerJack Sangdahl <[email protected]>2025-03-10 00:36:13 -0600
commit7c60dee83b436e8e8a667bf9f191beced8de4fc3 (patch)
treeeb7a24ee2067f92245c57bb118e85a1baf15df50 /other/boats_save_people.cpp
parent5d7cdc215e4ba1ec4cbb24c084cccb5e5e641468 (diff)
downloadleetcode-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.cpp35
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
+}