154.leetcode Find Minimum in Rotated Sorted Array II(hard)[排序数组 重复元素 二分查找]

来源:互联网 发布:nginx日志在哪 编辑:程序博客网 时间:2024/05/18 19:42

Follow up for "Find Minimum in Rotated Sorted Array":
What if duplicates are allowed?

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

Suppose a sorted array 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).

Find the minimum element.

The array may contain duplicates.

题目中排序数组中可能会存在部分重复的元素,因此在判断上会有所不同

class Solution {public:    /*int findMin(vector<int>& nums) {        int n = nums.size();//暴力求解o(n)        int result = 0;        if(n <=0) return result;        result = nums[0];        for(int i=1;i<n;i++)        {            if(nums[i]<result)                 result = nums[i];        }        return result;    }*/    int findMin(vector<int>& nums) {       if(nums.size()==1) return nums[0];        int start = 0;        int last = nums.size()-1;        int middle = 0;        if(nums[start]<nums[last]) return nums[middle];        while(nums[start]>= nums[last]&&start<last)        {            int middle = start+(last-start)/2;            if(nums[middle]>nums[start])                start = middle+1;            else if(nums[middle] == nums[start])                start++;            else                last = middle;        }        return nums[start];     }};


0 0
原创粉丝点击