题目地址:
https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/
寻找长 n n n的旋转数组 A A A中的最小值。题目保证 A A A中没有重复元素。
题目可以转述为,寻找数组中从左向右第一个小于等于 A [ 0 ] A[0] A[0]的数。可以利用二分法。代码如下:
class Solution {
public:
int findMin(vector<int>& a) {
int l = 0, r = a.size() - 1;
while (l < r) {
int mid = l + (r - l >> 1);
if (a[mid] < a[0]) r = mid;
else l = mid + 1;
}
return a[l] < a[0] ? a[l] : a[0];
}
};
时间复杂度 O ( log n ) O(\log n) O(logn),空间 O ( 1 ) O(1) O(1)。