Gibt bei einem gegebenen ganzzahligen Array „nums“ „true“ zurück, wenn es ein Tripel von Indizes (i, j, k) gibt, so dass i
Können Sie eine Lösung implementieren, die in O(n)-Zeitkomplexität und O(1)-Raumkomplexität läuft?
Um dieses Problem effizient zu lösen, müssen wir die kleinsten und zweitkleinsten bisher gefundenen Werte im Auge behalten. Wenn wir einen dritten Wert finden, der größer als der zweitkleinste ist, dann haben wir ein zunehmendes Triplett gefunden.
Die Brute-Force-Lösung besteht darin, alle möglichen Triplets zu überprüfen, um zu sehen, ob es eines gibt, das die Bedingung i
function increasingTripletBruteForce(nums: number[]): boolean { const n = nums.length; for (let i = 0; iZeitkomplexitätsanalyse:
Die Brute-Force-Lösung ist nicht effizient und nicht für große Eingabegrößen geeignet.
Die optimierte Lösung besteht darin, das Array zu durchlaufen und dabei zwei Variablen, die erste und die zweite, beizubehalten, die den kleinsten und den zweitkleinsten bisher gefundenen Wert darstellen. Wenn wir einen Wert finden, der größer als Sekunde ist, geben wir true zurück.
function increasingTriplet(nums: number[]): boolean { let first = Infinity; let second = Infinity; for (let num of nums) { if (numZeitkomplexitätsanalyse:
console.log(increasingTripletBruteForce([1,2,3,4,5])); // true console.log(increasingTripletBruteForce([5,4,3,2,1])); // false console.log(increasingTripletBruteForce([2,1,5,0,4,6])); // true console.log(increasingTripletBruteForce([1,1,1,1,1])); // false console.log(increasingTripletBruteForce([1,2])); // false console.log(increasingTripletBruteForce([1,2,3])); // true console.log(increasingTripletBruteForce([1,5,0,4,1,3])); // true console.log(increasingTriplet([1,2,3,4,5])); // true console.log(increasingTriplet([5,4,3,2,1])); // false console.log(increasingTriplet([2,1,5,0,4,6])); // true console.log(increasingTriplet([1,1,1,1,1])); // false console.log(increasingTriplet([1,2])); // false console.log(increasingTriplet([1,2,3])); // true console.log(increasingTriplet([1,5,0,4,1,3])); // true
Subarray-Probleme:
Zwei-Zeiger-Technik:
In-Place-Algorithmen:
Durch das Üben solcher Probleme und Strategien können Sie Ihre Fähigkeiten zur Problemlösung verbessern und besser auf verschiedene Codierungsherausforderungen vorbereitet sein.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3