leetcode 33. 搜索旋转排序数组

一、题目

image

二、解法

本题是二分法的变种。和标准二分问题的不同在于,二分后,两个区间不都是有序的,但必有一个有序,另一个可能有序也可能无序。

class Solution {
    public int search(int[] nums, int target) {
       int len=nums.length;
       int i=0,j=len-1;
       while(i<=j){
           int mid=i+(j-i)/2;
           if(nums[mid]==target) return mid;
           if(nums[mid]>=nums[i]){
               if(target>=nums[i]&&target<=nums[mid]){
                   j=mid-1;
               }else{
                   i=mid+1;
               }
           }else{
               if(target>=nums[mid]&&target<=nums[j]){
                   i=mid+1;
               }else{
                   j=mid-1;
               }
           }
       } 
       return -1;
    }
}
posted @ 2022-09-12 19:32  livingsu  阅读(14)  评论(0)    收藏  举报