leetcode刷题日记—— Search in Rotated Sorted Array II

来源:互联网 发布:单片机缝纫机 编辑:程序博客网 时间:2024/05/10 00:04
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.

问题分析:这个题目和题目1 区别就在于这里允许重复的元素。这样的话当middle等于low的时刻就不能判断是位于数组的前部分,还是位于数组的后半部分,所以这一点需要单独拿出来考虑,如果是这种情况,就讲low向后挪动一位即可,实现代码如下:

class Solution {public:    bool search(vector<int>& nums, int target) {         int size=nums.size();        if(size==0) return false;        int low=0,high=size-1,middle=0;        while(low<=high){            middle=(low+high)/2;            if(nums[middle]==target) return true;            if(nums[low]<nums[middle]){     //这里的等号去掉了                if(nums[low]<=target&&target<nums[middle]){                    high=middle-1;                }                else                   low=middle+1;            }            else if(nums[low]>nums[middle]){                if(nums[middle]<target&&target<=nums[high]){                    low=middle+1;                }                else                    high=middle-1;//注意这个地方            }            else                 low++;        }        return false;    }};


0 0
原创粉丝点击