您的位置:首页 > 其它

leetcode Find Minimum in Rotated Sorted Array

2015-06-01 20:55 281 查看
原题:

复杂度为O(n)的算法:

class Solution {
public:
int findMin(vector<int>& nums) {
int min=2^31-1;
for(int i=0; i<nums.size(); i++){
if(nums[i]<min)
min=nums[i];
}
return min;
}
};
需要注意的是min的初值,在32位系统中最大的有符号数应该是01111111111111111111111111111111;即2^31-1;

复杂度为O(logn)的算法:

class Solution {
public:
int findMin(vector<int>& nums) {
int begin=0;
int end=nums.size()-1;
while(begin<=end){
if((end-begin)==1)
return nums[begin]>=nums[end]?nums[end]:nums[begin];
if(nums[begin]<=nums[end])
return nums[begin];
int middle=(begin+end)/2;
if(nums[middle]>=nums[end])
begin=middle;
else
end=middle;
}
return begin;
}
};
需要注意的是边界条件,当只剩下两个元素时能退出程序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: