原文網址
問題詳情
給定一個包含 n 個整數的排序數組,找出給定目標值 target 的起始和結束位置。如果目標值不在數組中,則返回[-1, -1]
在線評測本題:
http://www.lintcode.com/zh-cn/problem/search-for-a-range/解答
這道題既然要求O(log n)那必然和binary search相關。那麼題目其實上是要找到給出的target區間[left,right]在數組中的左右邊界。我們用二分,分別找到left和right在數組裏面對應的左邊界和右邊界。二分的方法如下:
對搜索left:如果left = A[mid]則繼續向左找,否則向右找。直到搜索結束,left = start
對搜索right:如果right = A[mid]則繼續向右找,否則向左找。直到搜索結束,right = end
最後判斷如果A[left], A[right] != target,則表明target不存在於數組中, left = right = -1