4.相關知識
33. 搜尋旋轉排序陣列
公升序排列的整數陣列 nums 在預先未知的某個點上進行了旋轉(例如, [0,
1,2,
4,5,
6,7] 經旋轉後可能變為 [4,
5,6,
7,0,
1,2] )。
請你在陣列中搜尋 target ,如果陣列中存在這個目標值,則返回它的索引,否則返回 -
1 。
示例 1:
輸入:nums =[4
,5,6
,7,0
,1,2
], target =
0輸出:4
示例 2:
輸入:nums =[4
,5,6
,7,0
,1,2
], target =
3輸出:-
1示例 3:
輸入:nums =[1
], target =
0輸出:-1
1<= nums.length <=
5000-10
^4<= nums[i]
<=10^
4nums 中的每個值都 獨一無二
nums 肯定會在某個點上旋轉-10
^4<= target <=10^
4
未ac
暴力解法一定可以,但過於簡單,題目一定要求時間複雜度更低的演算法
比遍歷一次更簡單的演算法:logn的二分法
在二分法的判斷**現了問題
class
solution
else
if(nums[mid]
> target)
else
return mid;
}return-1
;}}
二分一定會將陣列分為有序的一部分和錯序的一部分,我們只需要判斷target是否在有序的那部分,否則一定在無序的那部分,縮小區間
通過mid將陣列分為三部分,mid, [left, mid - 1]和[mid+1, right],當分為三部分時,迴圈條件為left <= right,這是因為搜尋區間為[left, right],迴圈跳出時left > right, 此區間為空,則找不到目標
通過判斷nums[mid] 和 nums[0]的大小來確定哪個區間是有序的
class
solution
else
}return-1
;}}
二分 33 搜尋旋轉排序陣列
假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,1,2,4,5,6,7 可能變為 4,5,6,7,0,1,2 搜尋乙個給定的目標值,如果陣列中存在這個目標值,則返回它的索引,否則返回 1 你可以假設陣列中不存在重複的元素。輸入 nums 4,5,6,7,0,1,2 targe...
二分查詢 33 搜尋旋轉排序陣列
今天是2020年4月27日,星期一。今天的題目正好是我們前幾天學習的二分查詢,可以進一步鞏固學習內容。假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,1,2,4,5,6,7 可能變為 4,5,6,7,0,1,2 搜尋乙個給定的目標值,如果陣列中存在這個目標值,則返回它的索引,...
33 搜尋旋轉排序陣列 C 二分查詢
題目詳情 假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,1,2,4,5,6,7 可能變為 4,5,6,7,0,1,2 搜尋乙個給定的目標值,如果陣列中存在這個目標值,則返回它的索引,否則返回 1 你可以假設陣列中不存在重複的元素。你的演算法時間複雜度必須是 o log n ...