Leetcode No.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^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左側是有序的࿰

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章