632. Kleinste Bereichsabdeckungselemente aus K-Listen
Schwierigkeit:Schwer
Themen: Array, Hash-Tabelle, Greedy, Schiebefenster, Sortierung, Heap (Prioritätswarteschlange)
Sie haben k Listen sortierter Ganzzahlen in nicht absteigender Reihenfolge. Finden Sie den kleinsten Bereich, der mindestens eine Zahl aus jeder der k-Listen enthält.
Wir definieren, dass der Bereich [a, b] kleiner ist als der Bereich [c, d], wenn b – a < d - c oder a < c wenn b - a == d - c.
Beispiel 1:
Beispiel 2:
Einschränkungen:
Lösung:
Wir können einen Min-Heap (oder eine Prioritätswarteschlange) verwenden, um das kleinste Element aus jeder Liste zu verfolgen und gleichzeitig ein Schiebefenster aufrechtzuerhalten, um den kleinsten Bereich zu finden, der mindestens ein Element aus jeder Liste enthält.
Lassen Sie uns diese Lösung in PHP implementieren: 632. Kleinste Bereichsabdeckungselemente aus K-Listen
Erläuterung:
- Heap-Initialisierung:
- Der anfängliche Heap enthält das erste Element aus jeder Liste. Wir verfolgen auch das maximale Element unter den ersten Elementen.
- Verarbeitung des Heaps:
- Extrahieren Sie das minimale Element aus dem Heap und versuchen Sie dann, den Bereich zu erweitern, indem Sie das nächste Element aus derselben Liste hinzufügen (falls verfügbar).
- Nachdem Sie dem Heap ein neues Element hinzugefügt haben, aktualisieren Sie den maxValue, wenn das neue Element größer ist.
- Aktualisieren Sie den kleinsten Bereich immer dann, wenn die Differenz zwischen maxValue und minValue kleiner ist als der zuvor aufgezeichnete Bereich.
- Kündigung:
- Die Schleife stoppt, wenn in einer Liste keine Elemente mehr vorhanden sind, da wir nicht mehr alle Listen in den Bereich aufnehmen können.
Komplexitätsanalyse
Diese Lösung findet effizient den kleinsten Bereich, der mindestens eine Zahl aus jeder der k sortierten Listen enthält.
Kontaktlinks
Wenn Sie diese Serie hilfreich fanden, denken Sie bitte darüber nach, dem Repository einen Stern auf GitHub zu geben oder den Beitrag in Ihren bevorzugten sozialen Netzwerken zu teilen? Ihre Unterstützung würde mir sehr viel bedeuten!
Wenn Sie weitere hilfreiche Inhalte wie diesen wünschen, folgen Sie mir gerne:
Das obige ist der detaillierte Inhalt von. Kleinste Bereichsabdeckungselemente aus K-Listen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!