美文网首页
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循环有序数组最小值

    对于一个有序循环数组arr,返回arr中的最小值。有序循环数组是指,有序数组左边任意长度的部分放到右边去,右边的部...

  • 选择排序 Selection Sort

    应用场景 当主键都相同或部分相同的数组。 原理 循环遍历 N 次,每次循环都找到最小值并交换到左面。保持左侧有序。...

  • 选择排序(Java版)

    选择排序是每次循环都从未被选择的数组中选取一个最小值放在数组前面。第一次循环将全部数组中的最小值放在下标为0的位置...

  • 循环有序数组查找

    循环有序数组查找 题目:循环有序数组就是类似于56781234这样的数组。用logn复杂度查找一个元素,并返回其下...

  • JavaScript十大排序必修算法

    一、冒泡排序 通过相邻元素的比较和交换,使得每一趟循环都能找到未有序数组的最大值或最小值 1、单向冒泡 2、双向冒...

  • JS十大排序算法

    冒泡排序 通过相邻元素的比较和交换,使得每一趟循环都能找到未有序数组的最大值或最小值。 最好:O(n),只需要冒泡...

  • JavaScript:十大排序的算法思路和代码实现

    冒泡排序 通过相邻元素的比较和交换,使得每一趟循环都能找到未有序数组的最大值或最小值。 最好:O(n),只需要冒泡...

  • LeetCode刷题笔记(一)数组

    一. 数组 数组题目经常会使用到循环,背以下三种循环方式: 26. 删除有序数组中的重复项 题目描述:给你一个有序...

  • 旋转数组的最小值

    旋转数组的最小值 所谓旋转数组,即是递增有序数组旋转右移动若干位得到的数组,这里的右移和java里的>>>有点不同...

  • 腾讯(1)

    小Q的减法描述:给定一个数组,每次输出其非0的最小值,之后数组减去该最小值,不断循环,直到达到迭代次数或者所有数字...

网友评论

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

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