您好,登錄后才能下訂單哦!
小編給大家分享一下LeetCode中如何在排序數組中查找數字,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
統計一個數字在排序數組中出現的次數。
輸入: nums = [5,7,7,8,8,10], target = 8
輸出: 2
輸入: nums = [5,7,7,8,8,10], target = 6
輸出: 0
右邊界-左邊界+1
(數組存在該數字的情況下)class Solution:
def search(self, nums: List[int], target: int) -> int:
def binarySearch(isleft):
# 傳入flag isleft, 標記當前是查找左邊界還是右邊界
s, e = 0, len(nums) - 1
# 初始化結果為None
res = None
while s <= e:
m = (s + e) >> 1
if nums[m] == target:
if isleft:
# 當前查找的是左邊界, 更新結果為等于target的更小的下標, 同時向左繼續查找
res = m if res is None else min(res, m)
e = m - 1
else:
# 當前查找的是右邊界, 更新結果為等于target的更大的下標, 同時向右繼續查找
res = m if res is None else max(res, m)
s = m + 1
elif nums[m] < target:
s = m + 1
else:
e = m - 1
return res
left = binarySearch(True)
if left is None:
# 如果左邊界不存在, 則說明整個數組沒有target, 直接返回0
return 0
right = binarySearch(False)
# 最終結果就是右邊界-左邊界+1
return right - left + 1
看完了這篇文章,相信你對“LeetCode中如何在排序數組中查找數字”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。