LeetCode第33题:Search in Rotated Sorted Array在旋转有序数组中搜索(Java实现)

题目:

我的解答:

class Solution {
    //二分法的算法复杂度为O(lgn),即分治算法!
    public int search(int[] nums, int target) {
        int left=0;
        int right=nums.length-1;
        while(left<=right){
            int mid=left+(right-left)/2;
            if(nums[mid]==target){
                return mid;
            }else if(nums[mid]<nums[right]){//如果nums[mid]<nums[right]则说明右侧的排序是有序的,没有出现扰乱点
               if(nums[mid]<target&&target<=nums[right]){
                   left=mid+1;
               }else{
                   right=mid-1;
               }
            }else{//这种情况是mus[mid]>=nums[right]则说明左边的排序是有序的,没有出现扰乱点
                if(nums[mid]>target&&nums[left]<=target){
                    right=mid-1;
                }else{
                    left=mid+1;
                }
            }
        }
        return -1;
    }
}

运行结果:

猜你喜欢

转载自blog.csdn.net/FaustoPatton/article/details/87916538