美文网首页
6_4循环有序数组最小值

6_4循环有序数组最小值

作者: X_Y | 来源:发表于2017-10-05 23:54 被阅读25次

    对于一个有序循环数组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
            if(n<1) return -1;
            int left = 0, right = n-1, res = 99999999, mid = 0;
            while(left < right){
                mid = left + (right - left) / 2;
                if(arr[mid] >= arr[right]){
                    left = mid + 1;
                    res = res < arr[right] ? res : arr[right];
                }else if(arr[mid] <= arr[left]){
                    right = mid - 1;
                    res = res < arr[mid] ? res : arr[mid];
                }else{
                    return arr[left] < res ? arr[left] : res;
                }
            }
        return res;
        }
    };
    

    相关文章

      网友评论

          本文标题:6_4循环有序数组最小值

          本文链接:https://www.haomeiwen.com/subject/kuflyxtx.html