假設按照升序排序的數組在預先未知的某個點上進行了旋轉。
( 例如,數組 [0,1,2,4,5,6,7] 可能變為 [4,5,6,7,0,1,2] )。
搜索一個給定的目標值,如果數組中存在這個目標值,則返回它的索引,否則返回 -1 。
你可以假設數組中不存在重復的元素。
你的算法時間復雜度必須是 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,就是有序數組,用二分來處理;否則,target可能落在 left~mid和mid~right兩個區間內。
如果 left 《= target 《=mid 或者 left 》 mid 并且 target 》= left 或者 target 《= mid,則落在左區間。類似的可得出落在右區間的條件。

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
C語言
+關注
關注
183文章
7644瀏覽量
145570 -
leetcode
+關注
關注
0文章
20瀏覽量
2544
發布評論請先 登錄
相關推薦
熱點推薦
C語言_數組的查找、替換、排序、拼接
這篇文章主要是總結C語言的位運算幾個實戰例子,接著介紹數組的基本定義用法、數組排序、插入、拼接、刪除、字符串查找替換等。
C語言如何創建數組
C語言是一種非常強大和靈活的編程語言,它提供了若干數據類型來存儲和操作數據。其中之一就是數組,它可以用來存儲一系列具有相同數據類型的元素。本文將詳細介紹如何在
c語言中數組怎么定義
C語言中,數組是一種用來存儲相同類型元素的數據結構。它可以存儲多個元素,并通過一個共同的名稱來引用這些元素。數組是一種很重要的數據結構,可以用于解決很多實際的問題。 在
C語言: Leetcode 33搜索旋轉排序數組
評論