Heim > Artikel > Backend-Entwicklung > Nehmen Sie K von jedem Zeichen von links und rechts
2516. Nimm K von jedem Zeichen von links und rechts
Schwierigkeit:Mittel
Themen:Hash-Tabelle, String, Schiebefenster
Sie erhalten eine Zeichenfolge s, die aus den Zeichen „a“, „b“ und „c“ und einer nicht negativen Ganzzahl k besteht. Jede Minute können Sie entweder das Zeichen ganz links von s oder das Zeichen ganz rechts von s.
nehmenGeben Sie die Mindestanzahl Minuten zurück, die Sie benötigen, um mindestens k von jedem Zeichen zu nehmen, oder geben Sie -1 zurück, wenn es nicht möglich ist, k von jedem Zeichen zu nehmen Zeichen.
Beispiel 1:
Beispiel 2:
Einschränkungen:
Hinweis:
Lösung:
Wir können eine Schiebefenstertechnik mit zwei Zeigern verwenden, um die Mindestanzahl von Minuten zu ermitteln, die erforderlich sind, um mindestens k jedes Zeichens ('a', 'b', 'c') sowohl links als auch rechts vom zu entnehmen Zeichenfolge.
Erstprüfungen:
Frequenzzählung:
Schiebefenster-Technik:
Optimierung:
Lassen Sie uns diese Lösung in PHP implementieren: 2516. Nimm K von jedem Zeichen von links und rechts
Erläuterung:
Ersteinrichtung:
- Wir zählen die Vorkommen von „a“, „b“ und „c“ in der gesamten Zeichenfolge, um sicherzustellen, dass mindestens k von jedem Zeichen erfasst werden können.
- Wenn eine Zeichenanzahl weniger als k beträgt, wird -1 zurückgegeben.
Schiebefenster:
- Wir verwenden zwei Zeiger (links und rechts), um an beiden Enden ein Schiebefenster zu erstellen.
- Wir erweitern das Fenster, indem wir den rechten Zeiger bewegen und erhöhen die Anzahl der gefundenen Zeichen.
- Sobald wir mindestens k von jedem Zeichen im aktuellen Fenster haben, versuchen wir, das Fenster von links her zu verkleinern, um die Anzahl der Minuten (belegte Zeichen) zu minimieren.
Zeit minimieren:
- Wir verfolgen die erforderliche Mindestanzahl an Minuten, indem wir die Größe des Fensters jedes Mal vergleichen, wenn wir k Zeichen aller Art sammeln.
Zeitkomplexität:
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 vonNehmen Sie K von jedem Zeichen von links und rechts. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!