思路源于
【小白都能听懂的算法课】【力扣】【Leetcode33】搜索旋转排序数组 | 二分查找 | 数组
主要是数组旋转后分为左右两个升序区间 ,如果mid落在左区间并且目标大小也在left-mid中,那么right右缩
class Solution {public int search(int[] nums, int target) {int left=0,right=nums.length-1;while(left<=right){int mid=(right-left)/2+left;if(target==nums[mid])return mid;else {//mid落入左区间if(nums[left]<=nums[mid]){//target也在左区间if(nums[left]<=target&&target<nums[mid])right=mid-1;//target在右区间elseleft=mid+1;}else {//mid落入右区间//target也在右区间if(nums[mid]<target&&target<=nums[right])left=mid+1;//target在左区间elseright=mid-1;}}}return -1;}
}