From 7384a33f3ac1200686d50e8720fc6675edc83a24 Mon Sep 17 00:00:00 2001 From: Prad Nukala Date: Fri, 28 Aug 2026 15:52:39 -0400 Subject: [PATCH] feat: Add car fleet --- apps/docs/content/(array)/853-car-fleet.mdx | 47 ++++++++++ work/Medium/Array/853.car-fleet.py | 98 +++++++++++++++++++++ 2 files changed, 145 insertions(+) create mode 100644 apps/docs/content/(array)/853-car-fleet.mdx create mode 100644 work/Medium/Array/853.car-fleet.py diff --git a/apps/docs/content/(array)/853-car-fleet.mdx b/apps/docs/content/(array)/853-car-fleet.mdx new file mode 100644 index 0000000..f05f906 --- /dev/null +++ b/apps/docs/content/(array)/853-car-fleet.mdx @@ -0,0 +1,47 @@ +--- +title: '853. Car Fleet' +description: There are n cars at given miles away from the starting mile 0, traveling to reach the mile target +sidebar: + label: 'Car Fleet' + badge: 'Medium' +--- + +Monotonic Stack + +### Example 1: +- Input: `target = 12, position = [10,8,0,5,3], speed = [2,4,1,1,3]` +- Output: `3` +- Explanation: • The cars starting at `10 (speed 2`) and `8 (speed 4`) become a fleet, meeting each other at `12`. The fleet forms at `target`. • The car starting at `0 (speed 1`) does not catch up to any other car, so it is a fleet by itself. • The cars starting at `5 (speed 1`) and `3 (speed 3`) become a fleet, meeting each other at `6`. The fleet moves at `speed 1` until it reaches `target`. + +### Example 2: +- Input: `target = 10, position = [3], speed = [3]` +- Output: `1` +- Explanation: There is only one car, hence there is only one fleet. + +### Example 3: +- Input: `target = 100, position = [0,2,4], speed = [4,2,1]` +- Output: `1` +- Explanation: • The cars starting at `0 (speed 4`) and `2 (speed 2`) become a fleet, meeting each other at `4`. The car starting at `4 (speed 1`) travels to `5`. • Then, the fleet at `4 (speed 2`) and the car at `position 5 (speed 1`) become one fleet, meeting each other at `6`. The fleet moves at `speed 1` until it reaches `target`. + +### Constraints: + +- `n == position.length == speed.length` +- `1 <= n <= 10^5` +- `0 < target <= 10^6` +- `0 <= position[i] < target` +- All the values of `position` are unique. +- `0 < speed[i] <= 10^6` + +## Solution + +```py +class Solution: + def carFleet(self, target: int, position: List[int], speed: List[int]) -> int: + stack = [] + for pos, spd in sorted(zip(position, speed), reverse=True): + time = (target - pos) / spd + if not stack or time > stack[-1]: + stack.append(time) + + return len(stack) +``` diff --git a/work/Medium/Array/853.car-fleet.py b/work/Medium/Array/853.car-fleet.py new file mode 100644 index 0000000..9613f7c --- /dev/null +++ b/work/Medium/Array/853.car-fleet.py @@ -0,0 +1,98 @@ +""" +853. Car Fleet +Difficulty: Medium +https://leetcode.com/problems/car-fleet/ + +────────────────────────────────────────────────── + +There are n cars at given miles away from the starting mile 0, +traveling to reach the mile target. + +You are given two integer arrays position and speed, both of length +n, where position[i] is the starting mile of the i^th car and speed[i] +is the speed of the i^th car in miles per hour. + +A car cannot pass another car, but it can catch up and then travel +next to it at the speed of the slower car. + +A car fleet is a single car or a group of cars driving next to each +other. The speed of the car fleet is the minimum speed of any car in +the fleet. + +If a car catches up to a car fleet at the mile target, it will still +be considered as part of the car fleet. + +Return the number of car fleets that will arrive at the destination. + + + +Example 1: + +Input: target = 12, position = [10,8,0,5,3], speed = [2,4,1,1,3] + +Output: 3 + +Explanation: + +• The cars starting at 10 (speed 2) and 8 (speed 4) become a fleet, +meeting each other at 12. The fleet forms at target. + +• The car starting at 0 (speed 1) does not catch up to any other +car, so it is a fleet by itself. + +• The cars starting at 5 (speed 1) and 3 (speed 3) become a fleet, +meeting each other at 6. The fleet moves at speed 1 until it reaches +target. + +Example 2: + +Input: target = 10, position = [3], speed = [3] + +Output: 1 + +Explanation: + +There is only one car, hence there is only one fleet. + +Example 3: + +Input: target = 100, position = [0,2,4], speed = [4,2,1] + +Output: 1 + +Explanation: + +• The cars starting at 0 (speed 4) and 2 (speed 2) become a fleet, +meeting each other at 4. The car starting at 4 (speed 1) travels to 5. + +• Then, the fleet at 4 (speed 2) and the car at position 5 (speed 1) +become one fleet, meeting each other at 6. The fleet moves at speed 1 +until it reaches target. + + + +Constraints: + + • n == position.length == speed.length + + • 1 <= n <= 10^5 + + • 0 < target <= 10^6 + + • 0 <= position[i] < target + + • All the values of position are unique. + + • 0 < speed[i] <= 10^6 +""" + + +class Solution: + def carFleet(self, target: int, position: List[int], speed: List[int]) -> int: + stack = [] + for pos, spd in sorted(zip(position, speed), reverse=True): + time = (target - pos) / spd + if not stack or time > stack[-1]: + stack.append(time) + + return len(stack)