033搜尋旋轉排序陣列

2022-06-04 11:57:11 字數 1190 閱讀 6795

1 #include "

000庫函式.h"2

3//自解 68ms 弱爆了4//

先找到最大值,然後確定目標值在最大值的左邊還是右邊5//

最後使用折中尋找法,找到目標值的位置,此方法應該滿足複雜度不超過logn的要求

6class

solution

20else

24while (i <=j)

33return -1;34

}35};36

37//

這道題的關鍵在與,找到哪一部分是公升序的

38//

旋轉陣列有個特點,中間數的左右兩邊有一邊一定是公升序的,另一邊就不一定了

39//

此種解法滿足複雜度logn的要求 20ms

40/*

4142

0  1  2   4  5  6  7

4344

7  0  1   2  4  5  6

4546

6  7  0   1  2  4  5

4748

5  6  7   0  1  2  4

4950

4  5  6  7  0  1  2

5152

2  4  5  6  7  0  1

5354

1  2  4  5  6  7  0

5556

57*/

58class

solution

72else78}

79return -1;80

}81};82

8384

class

solution

92return -1;93

949596}

97};

9899

void

t033() ;

103 cout << s.search(n, 1) <104 n = ;

105 cout << s.search(n, 4) <106 n = ;

107 cout << s.search(n, 7) <108 n = ;

109 cout << s.search(n, 2) <110 n = ;

111 cout << s.search(n, 0) <112113 }

Leetcode 033 搜尋旋轉排序陣列

示例 1 輸入 nums 4,5,6,7,0,1,2 target 0 輸出 4 示例 2 輸入 nums 4,5,6,7,0,1,2 target 3 輸出 1方法 二分查詢法 思路 因為二分查詢的時間複雜度是log2n,也算是logn級別的,對此可以進行二分查詢 但需要注意 比較中間值和邊界值的...

LeetCode 033 搜尋旋轉排序陣列

給你乙個整數陣列 nums 和乙個整數 target 該整數陣列原本是按公升序排列,但輸入時在預先未知的某個點上進行了旋轉。例如,陣列 0,1,2,4,5,6,7 可能變為 4,5,6,7,0,1,2 請你在陣列中搜尋 target 如果陣列中存在這個目標值,則返回它的索引,否則返回 1 示例 1 ...

搜尋旋轉排序陣列

假設有乙個排序的按未知的旋轉軸旋轉的陣列 比如,0 1 2 4 5 6 7 可能成為4 5 6 7 0 1 2 給定乙個目標值進行搜尋,如果在陣列中找到目標值返回陣列中的索引位置,否則返回 1。你可以假設陣列中不存在重複的元素。分析 特殊的陣列搜尋某一元素問題,二分法。這一題的難點在於如何尋找二分的...