33. Search in Rotated Sorted Array

来源:互联网 发布:中山大学 知乎 编辑:程序博客网 时间:2024/06/03 16:46

一次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;    }};
0 0
原创粉丝点击