Find Minimum in Rotated Sorted Array Total

来源:互联网 发布:ubuntu怎么扩展内存 编辑:程序博客网 时间:2024/05/18 00:06
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.


解法:我只是遍历一遍寻找,后来看到还是可以使用二分法进行搜寻的


#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;}



0 0
原创粉丝点击