Suppose a sorted array is rotated at some pivot unknown to you beforehand.
(i.e., 0 1 2 4 5 6 7 might become 4
5 6 7 0 1 2).
Find the minimum element.
You may assume no duplicate exists in the array.
二分
class Solution {
public:
int findMin(vector<int> &num) {
int r = num.size();
if (r == 1) {
return num[0];
}
r--;
int l = 0;
while (l < r) {
int mid = l + (r-l)/2;
if (num[mid] > num[r]) {
l = mid + 1;
} else {
r = mid;
}
}
return num[l];
}
};遍历
class Solution {
public:
int findMin(vector<int> &num) {
const int n = num.size();
for (int i = 1; i < n; i++) {
if (num[i] < num[i-1]) {
return num[i];
}
}
return num[0];
}
};
本文介绍如何在已知旋转排序数组中找到最小元素,提供了两种方法:二分查找和线性遍历。二分查找方法通过不断缩小搜索范围来高效定位最小值,而线性遍历则从头开始逐个比较直至找到最小值。
1192

被折叠的 条评论
为什么被折叠?



