Find Minimum in Rotated Sorted Array II

来源:互联网 发布:美萍医药软件 编辑:程序博客网 时间:2024/06/07 13:40

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.

分析:

《剑指offer》原题;

判断到重复的 顺序扫描

public class Solution {    public int findMin(int[] num) {    return findMin(num, 0, num.length-1);} public int findMin(int[] num, int left, int right){    if(right==left){        return num[left];    }    if(right == left +1){        return Math.min(num[left], num[right]);    }    // 3 3 1 3 3 3     int middle = (right-left)/2 + left;    // already sorted    if(num[right] > num[left]){        return num[left];    //right shift one    }else if(num[right] == num[left]){        return findMin(num, left+1, right);    //go right        }else if(num[middle] >= num[left]){        return findMin(num, middle, right);    //go left        }else{        return findMin(num, left, middle);    }}}


0 0
原创粉丝点击