标签:mic lse 当当 img png break mamicode 取数 就是
题目:
这道题有三种思路:
min
,直接遍历一遍,每个元素都与min
进行比较,当当前元素比最小值min
小则更新min
的值,这里的时间复杂度是O(n)
a[i+1] < a[i]
那么就可以确定a[i+1]
就是最小值,这里的时间复杂度大概是O(1)~O(n)
之间,取决于最小值在哪O(1)~O(n/2)
之间1、2很简单,所以这里就不放出代码了,我们只看3:
class Solution {
public:
int minNumberInRotateArray(vector<int> rotateArray) {
int size = rotateArray.size();
if(size == 0) {
return 0;
}
int left = rotateArray[0];
int right = rotateArray[size - 1];
int idx = size / 2;
int res = 0;
while(idx > 0 && idx < size) {
if(rotateArray[idx] > left && rotateArray[idx] <= rotateArray[idx + 1]) {
// 左区
++idx;
}
else if(rotateArray[idx] < right && rotateArray[idx] >= rotateArray[idx - 1]) {
// 右区
--idx;
}
else {
// 此时我们在边界,但是不确定idx此时在左区最右边还是右区最左边
res = rotateArray[idx] > rotateArray[idx + 1] ? rotateArray[idx + 1] : rotateArray[idx];
break;
}
}
return res;
}
};
标签:mic lse 当当 img png break mamicode 取数 就是
原文地址:https://www.cnblogs.com/yejianying/p/jianzhioffer_minNumberInRotateArray.html