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。你可以假設陣列中不存在重複的元素。分析 特殊的陣列搜尋某一元素問題,二分法。這一題的難點在於如何尋找二分的...