diff --git a/853-car-fleet/driver.cpp b/853-car-fleet/driver.cpp new file mode 100644 index 0000000..624fe38 --- /dev/null +++ b/853-car-fleet/driver.cpp @@ -0,0 +1,12 @@ +#include "soln.hpp" + +int main() +{ + int target = 12; + vector position{10, 8, 0, 5, 3}; + vector speed{2, 4, 1, 1, 3}; + int answer = 3; + Solution soln; + cout << "Found car fleets correctly? " << soln.test(target, position, speed, answer) << endl; + return 0; +} \ No newline at end of file diff --git a/853-car-fleet/soln.cpp b/853-car-fleet/soln.cpp new file mode 100644 index 0000000..c871c20 --- /dev/null +++ b/853-car-fleet/soln.cpp @@ -0,0 +1,35 @@ +#include "soln.hpp" + +int Solution::carFleet(int target, vector &position, vector &speed) +{ + if (position.size() < 2) + return position.size(); + // int fleets = position.size(); + vector cars; + vector slowest_times; + for (int i = 0; i < position.size(); i++) + { + cars.push_back(Car(position[i], speed[i])); + } + sort( + cars.begin(), + cars.end(), + [](const Car &lhs, const Car &rhs) + { + return lhs.start_pos < rhs.start_pos; + }); + for (int i = cars.size() - 1; i >= 0; i--) + { + slowest_times.push_back((target - cars[i].start_pos) / float(cars[i].car_speed)); + if (slowest_times.size() >= 2 && slowest_times[slowest_times.size() - 1] <= slowest_times[slowest_times.size() - 2]) + { + slowest_times.pop_back(); + } + } + return slowest_times.size(); +} + +bool Solution::test(int target, vector &position, vector &speed, int answer) +{ + return carFleet(target, position, speed) == answer; +} diff --git a/853-car-fleet/soln.hpp b/853-car-fleet/soln.hpp new file mode 100644 index 0000000..616201a --- /dev/null +++ b/853-car-fleet/soln.hpp @@ -0,0 +1,15 @@ +#include +using namespace std; +class Solution +{ +public: + struct Car + { + int start_pos; + double car_speed; + Car() : start_pos(0), car_speed(0) {} + Car(int pos, double s) : start_pos(pos), car_speed(s) {} + }; + int carFleet(int target, vector &position, vector &speed); + bool test(int target, vector &position, vector &speed, int answer); +}; \ No newline at end of file