leetcode33 搜尋旋轉排序陣列

2022-09-04 12:24:13 字數 1014 閱讀 3377

假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。

( 例如,陣列 [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

最簡單的做法就是順序搜尋,但是這樣複雜度時o(n

)o(n

),顯然不符合要求,那只能還是使用二分。我們可以想,既然乙個數字是旋轉排序的,那麼我們取中點,中點左右兩邊一定有一邊是排序好的,比如說[ 4 , 1 , 2 , 3], 以1為中點,那麼他的右邊就是排序好的,左邊就是沒有排序好的,如果target在排序好的那組,那就直接二分;如果在沒排序好的那裡,就在迭代尋找。

**如下

class

solution

if(nums[mid]

>= nums[left]

)else

}else

else}}

return-1

;}// public static void main(string args) ;

// int localtion = s.search(list, 5);

// system.out.println(localtion);

// }

}

leetcode33 搜尋旋轉排列陣列

假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,1,2,4,5,6,7 可能變為 4,5,6,7,0,1,2 搜尋乙個給定的目標值,如果陣列中存在這個目標值,則返回它的索引,否則返回 1 你可以假設陣列中不存在重複的元素。你的演算法時間複雜度必須是 o log n 級別。示例...

LeetCode 33 搜尋旋轉排序陣列

假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,1,2,4,5,6,7 可能變為 4,5,6,7,0,1,2 搜尋乙個給定的目標值,如果陣列中存在這個目標值,則返回它的索引,否則返回 1。你可以假設陣列中不存在重複的元素。你的演算法時間複雜度必須是 o log n 級別。示例...

leetcode 33 搜尋旋轉排序陣列

leetcode 33.搜尋旋轉排序陣列 假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,1,2,4,5,6,7 可能變為 4,5,6,7,0,1,2 搜尋乙個給定的目標值,如果陣列中存在這個目標值,則返回它的索引,否則返回 1 你可以假設陣列中不存在重複的元素。你的演算法時...