Leetcode 题目:Search in Rotated Sorted Array

原题如下

Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.

(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).

You are given a target value to search. If found in the array return its index, otherwise return -1.

You may assume no duplicate exists in the array.

分析:

与之前不同的是,该题顺序有可能旋转,即不知道顺序数列的首尾在哪。因此每次多判断一次。

代码如下:

int search(vector<int>& nums, int target) {
        int left,right,mid,temp;
        
        left = 0;
        right = nums.size()-1;
        
        
        
        while (right>=left)
        {
            
            mid = left + (right - left)/2;
            
            if(target==nums[mid])
                return mid;
            
            if(nums[mid]<nums[right])
            {
                if((target>nums[mid])&& (target <= nums[right]))
                    left = mid +1;
                else
                    right = mid -1;
            }
            else
            {
                if((target<nums[mid]) && (target >= nums[left]))
                    right = mid - 1;
                else
                    left = mid + 1;
            }
            
        }
        return -1;
    }


猜你喜欢

转载自blog.csdn.net/u013721521/article/details/79758380