leetcode Find Minimum in Rotated Sorted Array

来源:互联网 发布:衬衣品牌 知乎 编辑:程序博客网 时间:2024/04/29 21:41

原题:


复杂度为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;    }};
需要注意的是边界条件,当只剩下两个元素时能退出程序。

0 0
原创粉丝点击