diff --git a/problems/boats-to-save-people.cpp b/problems/boats-to-save-people.cpp new file mode 100644 index 0000000..7e6905c --- /dev/null +++ b/problems/boats-to-save-people.cpp @@ -0,0 +1,27 @@ +#include +#include + +class Solution { +public: + int numRescueBoats(std::vector people, int limit) + { + std::sort(people.begin(), people.end()); + + int counter = 0; + + std::size_t left = 0, right = people.size() - 1; + while (left <= right && left < people.size() && right < people.size()) { + counter++; + + // if they both it, shift the left pointer + if (left < right && people[left] + people[right] <= limit) { + left++; + } + + // anyways, at least the heaviest person is included + right--; + } + + return counter; + } +};