一次AC,看来我对于对分题,已经有了比较成熟的解法了。
class Solution { public: int search(vector<int>& nums, int target) { if(nums.size()==0) return -1; int left=0; int right=nums.size()-1; while(right-left>1) { int mid=left+(right-left)/2;//index if(nums[mid]>nums[left]) { if(target>nums[mid]) left=mid+1; else if(target<nums[mid]) { if(target>nums[left]) right=mid-1; else if(target<nums[left]) left=mid+1; else return left; } else return mid; } else if(nums[mid]<nums[left]) { if(target<nums[mid]) right=mid-1; else if(target>nums[mid]) { if(target>nums[right]) right=mid-1; else if(target<nums[right]) left=mid+1; else return right; } else return mid; } else break; } //[left,right] if(nums[left]==target) return left; else if(nums[right]==target) return right; else return -1; } };