Flotta auto
Guida dettagliata e implementazione Python per il problema "Flotta auto".
1. Impara
Il problema del "parco auto" è una sfida chiave nella sezione Stack.
Questa implementazione si concentra sulla logica di livello semplice in Python.
Diamo priorità all'accuratezza tecnica e alla leggibilità del codice nelle soluzioni fornite.
2. Real-World Applications
3. Visual Intuition
Visualizzazione del flusso logico per la flotta auto.
4. Prerequisites
5. Step-by-Step Thinking
1. Understand the problem
Leggi attentamente la dichiarazione del problema per il parco auto.
2. Formulate brute force
Elaborare una semplice soluzione iterativa.
3. Identify inefficiency
Cerca calcoli ridondanti.
4. Optimize search path
Utilizza l'hashing o l'ordinamento per accelerare il processo.
5. Final Implementation
Ripulire il codice per gli standard di produzione.
Dichiarazione del problema
Ci sono auto n dirette alla stessa destinazione lungo una strada a una corsia. La destinazione è a target miglia di distanza.
Ti vengono forniti due array di numeri interi position e speed, entrambi di lunghezza n, dove position[i] è la posizione della iesima macchina e speed[i] è la velocità della iesima macchina (in miglia all'ora).
Un'auto non può mai superare un'altra macchina che la precede, ma può raggiungerla e spingersi da un paraurti all'altro alla stessa velocità. L'auto più veloce rallenterà per eguagliare la velocità dell'auto più lenta. La distanza tra queste due auto viene ignorata (si presuppone che siano nella stessa posizione).
Una flotta di automobili è un insieme non vuoto di automobili che circolano nella stessa posizione e alla stessa velocità. Una singola auto è anche una flotta di auto.
Restituisce il numero di flotte di auto che arriveranno a destinazione.
Scrivi una funzione carFleet(target: int, position: List[int], speed: List[int]) -> int.
- •n == len(position) == len(speed)
- •1 <= n <= 10^5
- •0 < target <= 10^6
- •0 <= position[i] < target
- •0 < speed[i] <= 10^6
- •All positions are unique
Esempi
target = 12, position = [10, 8, 0, 5, 3], speed = [2, 4, 1, 1, 3]
3
Cars at positions 10 and 8: car at 8 catches car at 10 (both arrive at time 1), forming 1 fleet. Car at 0: arrives at time 12. Car at 5: arrives at time 7. Car at 3: arrives at time 3, catches car at 5 at time 7, but car at 5 arrives at 7 too. Cars at 3 and 5 form a fleet. Total: 3 fleets.
target = 10, position = [3], speed = [3]
1
Only one car, so one fleet.
target = 100, position = [0, 2, 4], speed = [4, 2, 1]
1
All cars eventually form a single fleet.
Need a Hint?
Edge Cases to Watch
- Strutture di input vuote
- Ingressi a elemento singolo
- Grandi limiti numerici
Pronto a risolvere?
Open the problem in PyRun's browser-based Python editor. Your code runs fully offline — no server required.
Approfondimenti e variazioni dell'intervista
Scomposizione dell'analisi della complessità
Perché il tempo: Directly evaluates all possibilities.
Perché lo spazio: Uses standard local memory.
Perché il tempo: Optimized paths reduce total operations.
Perché lo spazio: May trade memory for speed.
Codice Python della soluzione ottimizzata
Codice Python della soluzione ottimizzata
def car_fleet_opt(target, position, speed):
pair = [[p, s] for p, s in zip(position, speed)]
stack = []
for p, s in sorted(pair)[::-1]:
stack.append((target - p) / s)
if len(stack) >= 2 and stack[-1] <= stack[-2]:
stack.pop()
return len(stack)Codice forza bruta (protetto da spoiler)
Codice forza bruta (protetto da spoiler)
def car_fleet_brute(target, position, speed):
cars = sorted(zip(position, speed), reverse=True)
times = [(target - p) / s for p, s in cars]
fleets = 0
curr_max_time = 0
for t in times:
if t > curr_max_time:
fleets += 1
curr_max_time = t
return fleetsAlgorithm Pattern Checklist
When dealing with Stack data patterns.
- Are constraints clear?
- Is there a linear or logarithmic optimization possible?
Key Revision Notes
Si applicano le proprietà del problema Stack standard.
Domande correlate
PyRun is built and maintained by an independent solo developer. If this helped your interview prep, consider buying a coffee!
Risorse Python consigliate
Espandi le tue conoscenze con tutorial interattivi, foglietti illustrativi e confronti di codici correlati.
Cicli Python
Scopri come utilizzare i loop Python per eseguire iterazioni sui dati. Padroneggia le best practice sui cicli for, while, interruzione, continua e loop con esempi interattivi.
Come ordinare un elenco in Python
Scopri come ordinare un elenco in Python utilizzando il metodo sort() e la funzione sorted(). Scopri l'ordinamento delle chiavi personalizzato e gli esempi di ordine inverso.
Foglio informativo sui metodi delle stringhe Python
Una guida di riferimento completa per la manipolazione delle stringhe Python. Padroneggia la formattazione, la ricerca, la divisione, la sostituzione e il controllo delle proprietà delle stringhe.
Python vs JavaScript: quale linguaggio di programmazione è il migliore?
Un confronto completo tra Python e JavaScript. Esplora le differenze di sintassi, le prestazioni, i casi d'uso (backend e frontend) ed esempi di codifica.