6_4循环有序数组最小值

对于一个有序循环数组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;
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,352评论 0 33
  • ​ 果不其然,这对cp的影响力还是值得肯定的, 一个是天才少女的大提琴演奏家、一个是纯自然、无公害的“虎牙弟弟”。...
    闲人电影阅读 3,388评论 0 0
  • 《人类简史》讲,我们常常说要“随心所欲“,而这里的“心”,不过是结合了外界主流(结合了19世纪浪漫主义与20世纪消...
    查理小鹿阅读 3,462评论 0 0
  • 阿里云最近推出了移动热修复服务,听说这个服务傻瓜式接入,性能相对较好,对新技术比较好奇的我决定尝试一下。 首先,需...
    沈子羽阅读 3,914评论 4 7
  • 《和山水谈情》王廷京 你好啊,大山,我爱你,我想让我的汗水和鲜血流进你的心里,滋补你巍峨峥嵘的...
    王廷京江西阿刚阅读 1,228评论 0 0