33. Search in Rotated Sorted Array

来源:互联网 发布:软件需求分析过程 编辑:程序博客网 时间:2024/05/15 00:36

这里只会有两种情况


第一种情况下若要找比mid大的值只有往右走,若要找比mid小的值,左右都有可能


第二种情况下若要找比mid小的值只有往左走,若要找比mid大的值,左右都有可能

class Solution {public:int search(vector<int>& nums, int target) {        int n=nums.size();        int left=0,right=n-1;        int premid;        while(left<=right)        {            int mid=(left+right)>>1;            if(nums[mid]==target)                return mid;            else if(nums[mid]>target)            {                if(nums[mid]<nums[left])                    right=mid-1;                else                {                    if(nums[left]>target)                        left=mid+1;                    else                        right=mid-1;                }            }            else            {                if(nums[mid]>nums[left])                    left=mid+1;                else                {                    if(target>nums[right])                        right=mid-1;                    else                        left=mid+1;                }            }        }        return -1;    }};



0 0
原创粉丝点击