1. 程式人生 > 其它 >排序陣列中查詢目標原始的開始和結束索引

排序陣列中查詢目標原始的開始和結束索引

# 給定一個按照升序排列的整數陣列 nums,和一個目標值 target。找出給定目標值在陣列中的開始位置和結束位置。 
#
# 如果陣列中不存在目標值 target,返回 [-1, -1]。
#
# 進階:
#
#
# 你可以設計並實現時間複雜度為 O(log n) 的演算法解決此問題嗎?
#
#
#
#
# 示例 1:
#
#
# 輸入:nums = [5,7,7,8,8,10], target = 8
# 輸出:[3,4]

方法:二分法的變體

def searchRange(nums, target):
    # 採用二分法找到開始和結尾目標資料
    res = []
    left, right 
= 0, len(nums)-1 res = two_division(nums, target, left, right) return res def two_division(nums, target, left, right): while left<right: mid = (left + right) // 2 if nums[mid] == target: start, end = mid, mid while start-1 >= 0 and nums[start-1] == target: start
-= 1 while end+1 < len(nums) and nums[end+1] == target: end += 1 return [start, end] elif nums[mid] < target: left += 1 else: right -= 1 return [-1, -1]