循环有序数组最小值

来源:互联网 发布:马哥2014linux视频 编辑:程序博客网 时间:2024/06/10 13:02

对于一个有序循环数组arr,返回arr中的最小值。有序循环数组是指,有序数组左边任意长度的部分放到右边去,右边的部分拿到左边来。比如数组[1,2,3,3,4],是有序循环数组,[4,1,2,3,3]也是。

给定数组arr及它的大小n,请返回最小值。

测试样例:
[4,1,2,3,3],5
返回:1
class MinValue {public:    int getMin(vector<int> arr, int n) {        // write code here        int left=0;        int right=n-1;        while(left<right){            int mid=left+(right-left)/2;            if(arr[mid]>arr[left]){                left=mid;            }            else if(arr[mid]<arr[right]){                right=mid;            }            else{                mid++;                if(arr[0]<arr[mid]){                    mid=0;                }                return arr[mid];            }        }        return arr[0];    }};


0 0
原创粉丝点击