假設(shè)按照升序排序的數(shù)組在預(yù)先未知的某個點(diǎn)上進(jìn)行了旋轉(zhuǎn)。
( 例如,數(shù)組 [0,1,2,4,5,6,7] 可能變?yōu)?[4,5,6,7,0,1,2] )。
搜索一個給定的目標(biāo)值,如果數(shù)組中存在這個目標(biāo)值,則返回它的索引,否則返回 -1 。
你可以假設(shè)數(shù)組中不存在重復(fù)的元素。
你的算法時間復(fù)雜度必須是 O(log n) 級別。
示例 1:
輸入: nums = [4,5,6,7,0,1,2], target = 0
輸出: 4
示例 2:
輸入: nums = [4,5,6,7,0,1,2], target = 3
輸出: -1
解法1:如果是 left 《 right,就是有序數(shù)組,用二分來處理;否則,target可能落在 left~mid和mid~right兩個區(qū)間內(nèi)。
如果 left 《= target 《=mid 或者 left 》 mid 并且 target 》= left 或者 target 《= mid,則落在左區(qū)間。類似的可得出落在右區(qū)間的條件。

思路2: 先考慮target落在 left~mid的情況,然后再考慮落在 mid~right的情況。而每個區(qū)間又要考慮是不是有序的。

-
C語言
+關(guān)注
關(guān)注
183文章
7644瀏覽量
145544 -
leetcode
+關(guān)注
關(guān)注
0文章
20瀏覽量
2544
發(fā)布評論請先 登錄
C語言插入排序算法和代碼
C語言入門教程-數(shù)組
C語言教程之對數(shù)組進(jìn)行升序和降序排序
C語言:leetcode 35搜索插入位置
C語言:LeetCode 153尋找旋轉(zhuǎn)排序數(shù)組中的最小值
C語言: Leetcode 33搜索旋轉(zhuǎn)排序數(shù)組
評論