leetcode 1094. Car Pooling (Python)

13 Jul 2020 Leetcode Greedy

1094. Car Pooling (Python)

Greedy.

Description

You are driving a vehicle that has capacity empty seats initially available for passengers. The vehicle only drives east (ie. it cannot turn around and drive west.)

Given a list of trips, trip[i] = [num_passengers, start_location, end_location] contains information about the i-th trip: the number of passengers that must be picked up, and the locations to pick them up and drop them off. The locations are given as the number of kilometers due east from your vehicle’s initial location.

Return true if and only if it is possible to pick up and drop off all passengers for all the given trips.

Sample I/O

Example 1

Input: trips = [[2,1,5],[3,3,7]], capacity = 4
Output: false

Example 2

Input: trips = [[2,1,5],[3,3,7]], capacity = 5
Output: true

Example 3

Input: trips = [[2,1,5],[3,5,7]], capacity = 3
Output: true

Example 4

Input: trips = [[3,2,7],[3,7,9],[8,3,9]], capacity = 11
Output: true

Constraints:

  • trips.length <= 1000
  • trips[i].length == 3
  • 1 <= trips[i][0] <= 100
  • 0 <= trips[i][1] < trips[i][2] <= 1000
  • 1 <= capacity <= 100000

Methodology

We use greedy to solve this question. For each trip in trips, there customer number, start location and end location. We create a list and append the [start_location, number] and [end_location, -number] to the list since when start, there are n customers get on the car and when end there are n customers drop off the car. Then we sort the list by the location. The reason we sort the location is to find if the customers number is greater than capacity when driving one way. If customer number is greater return false.

def carPooling(self, trips: List[List[int]], capacity: int) -> bool:
        locations=[]
        for n, start, end in trips:
            locations.append((start,n))
            locations.append((end,-n))
        total = 0
        for location, number in sorted(locations):
            total+=number
            if total>capacity:return False
        return True

BigO

Time complexity : O(4n) where n is the size of input.

Search

    Table of Contents