33 搜尋旋轉排序陣列 Medium

2021-10-10 03:30:53 字數 730 閱讀 7134

三、總結

給你乙個公升序排列的整數陣列 nums ,和乙個整數 target 。

假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。(例如,陣列 [0,1,2,4,5,6,7] 可能變為 [4,5,6,7,0,1,2] )。

請你在陣列中搜尋 target ,如果陣列中存在這個目標值,則返回它的索引,否則返回 -1 。

nums 中的每個值都獨一無二

示例1:

示例2:

示例3:

二分法解決問題,但陣列不是有序的,而是區域性有序的,本題最好的做法是用全程用二分(速度logn),要特別注意邊界條件的判斷:

int

search

(vector<

int>

& nums,

int target)

else

}return-1

;}

左閉右閉模板:

int

search

(vector<

int>

& nums,

int target)

else

}return-1

;}

難點在於怎麼將兩個二分過程用乙個解決,注意邊界條件的判斷。

33 搜尋旋轉排序陣列

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

33 搜尋旋轉排序陣列

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

33 搜尋旋轉排序陣列

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