[leetcode]【数组】81. Search in Rotated Sorted Array II

来源:互联网 发布:计算圆周率的算法 编辑:程序博客网 时间:2024/06/06 00:39

Follow up for “Search in Rotated Sorted Array”:
What if duplicates are allowed?

Would this affect the run-time complexity? How and why?

Write a function to determine if a given target is in the array.

题解

同《Search in Rotated Sorted Array》类似,只是允许有重复的元素。
同样这里也可以通过一轮遍历达到解题效果,这里就不贴代码了。
这里想说的还是二分法,不同之前的是这里得考虑重复的元素情况。

//cppclass Solution {public:    bool search(vector<int>& nums, int target) {        int head=0,tail=nums.size();        while(head!=tail)        {            int mid=(head+tail)/2;            if(nums[mid]==target)                return true;            if(nums[head]<nums[mid])            {                if(target>=nums[head]&&target<nums[mid])                    tail=mid;                else head=mid+1;            }            else if(nums[head]>nums[mid])            {                if(target>nums[mid]&&target<=nums[tail-1])                    head=mid+1;                else tail=mid;            }            else head++;        }        return false;    }};
0 0