Find Minimum in Rotated Sorted Array Total
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.
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.
解法:我只是遍历一遍寻找,后来看到还是可以使用二分法进行搜寻的
#include<iostream>
#include<vector>
using namespace std;
class Solution {
public:
int findMin(vector<int> &num) {
int min=num[0];
for(int i=1;i<num.size();++i){
//cout<<num[i]<<endl;
if(min>num[i]){
min=num[i];
}
}
return min;
}
};
int main(){
Solution s;
vector<int> vint;
vint.push_back(4);
vint.push_back(5);
vint.push_back(6);
vint.push_back(7);
vint.push_back(0);
vint.push_back(1);
vint.push_back(2);
cout<<s.findMin(vint)<<endl;
return 0;
}
#include<iostream>
#include<vector>
using namespace std;
class Solution {
public:
int findMin(vector<int> &num) {
int s=0;
int e=num.size()-1;
while(num[s]>num[e]){
int m=(s+e)/2;
if(num[m]<num[e]){
e=m;
}else{
s=m+1;
}
}
return num[s];
}
};
int main(){
Solution s;
vector<int> vint;
vint.push_back(4);
vint.push_back(5);
vint.push_back(6);
vint.push_back(0);
vint.push_back(1);
vint.push_back(2);
vint.push_back(3);
cout<<s.findMin(vint)<<endl;
return 0;
}