二分法的思想来做这道题目
class Solution { public int search(int[] nums, int target) { if(nums==null||nums.length==0){ return -1; } int start=0; int end=nums.length-1; while(start<=end){ int mid=start+(end-start)/2; if(nums[mid]==target){ return mid; } if(nums[start]<=nums[mid]){ //判断左侧区间递增 if(target>=nums[start]&&target<nums[mid]){ //判断是否位于区间之中 end=mid-1; }else{ start=mid+1; } }else{ //判断右侧区间递增 if(target>nums[mid]&&target<=nums[end]){ //判断是否位于这个区间 start=mid+1; }else{ end=mid-1; } } } return -1; } }
详情可参考: