且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

[leetCode 第1题] -- Find Minimum in Rotated Sorted Array

更新时间:2022-01-29 12:23:28


题目链接: Find Minimun in Rotated Sorted Array

题目意思: 给定一个旋转数组,找出这个旋转数组的最小元素。旋转数组的定义是,把一个从小到大排好序的数组,取一部份放到末尾,例如0 1 2 4 5 6 7 取 0 1 2放到末尾,变成旋转数组4 5 6 7 0 1 2


代码: 

class Solution {
public:
    int findMin(vector<int> &num);    
};

int Solution::findMin(vector<int> &num) {
    int length = num.size();
    if (length == 1) {
        return num[0];
    }
    int p1 = 0;
    int p2 = length -1;
    while (p1 < p2) {
        if (p1+1 == p2) {
            return min(num[p1], num[p2]);
        }
        int mid = (p1 + p2) >> 1;
        if (num[mid] < num[p2]) {
            p2 = mid;
        }
        else {
            p1 = mid;
        }
    }
}