一、題目描述
升序排列的整數陣列 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^4
nums 中的每個值都 獨一無二
nums 肯定會在某個點上旋轉
-10^4 <= target <= 10^4
二、解題思路
使用二分查找,初始化兩個變數low=0,hight=nums.length-1,mid=(low+high)/2
1、假如nums[mid]等于target,回傳下標mid
2、當nums[mid]小于nums[high]時,說明mid->high右側是有序的,判斷target是否在右側,否則往左側尋找
3、當nums[mid]大于nums[high]時,說明low->mid左側是有序的?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/250132.html
標籤:其他
上一篇:防抖節流工具型方法的封裝
下一篇:Pr 除水印及視頻統一字幕
