直接扫描
class Solution {
public:
int findMin(vector<int>& nums) {
int n = nums.size();
if(n == 0) return -1;
int minn = INT_MAX;
for(int i = 0; i < n; i++){
minn = min(minn, nums[i]);
}
return minn;
}
};
直接排序
class Solution {
public:
int findMin(vector<int>& nums) {
int n = nums.size();
if(n == 0) return -1;
sort(nums.begin(), nums.end());
return nums[0];
}
};
二分
和 https://www.acwing.com/problem/content/description/20/ 一样
不过这里数字没有重复的,不用删去重复数的那一行代码
class Solution {
public:
int findMin(vector<int>& nums) {
int n = nums.size();
if(n == 0) return -1;
if(nums[n-1] > nums[0]) return nums[0]; //单调递增
int l = 0, r = n-1;
while(l < r){
int mid = (l + r) / 2;
if(nums[mid] < nums[0]) r = mid;
else l = mid + 1;
}
return nums[r];
}
};