Während ich die Frage zu Leetcode gelöst habe, die besagt, dass in einem gegebenen Array von ganzen Zahlen, die in nicht absteigender Reihenfolge sortiert sind, die Start- und Endposition eines bestimmten Zielwerts gefunden werden soll. Daher war es unmöglich, den Anfang und das Ende eines Zielelements in einem Array mit einem einfachen binären Scan zurückzugeben, da nur der Index zurückgegeben wird, an dem das erste Zielelement gefunden wurde, bei dem es sich um den Anfang, das Ende oder die Mitte dieses Elements handeln kann. Also verwenden wir Double Binary Scarch und hier erfahren Sie, wie es geht ...
Erste binäre Suche:
Zweite binäre Suche:
Rückgabeergebnis:
Zeitkomplexität:
Weltraumkomplexität:
class Solution { public int[] searchRange(int[] nums, int target) { int ei = nums.length - 1; int si = 0; int[] res = {-1, -1}; // Initialize result array // First binary search to find the last occurrence while (si nums[mid]) { si = mid 1; } else { res[1] = mid; // Update end index si = mid 1; // Search in the right half } } // Reset the pointers for the second binary search si = 0; ei = nums.length - 1; // Second binary search to find the first occurrence while (si nums[mid]) { si = mid 1; } else { res[0] = mid; // Update start index ei = mid - 1; // Search in the left half } } return res; // Return the result array } }
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