Find Peak Element

来源:互联网 发布:交友软件哪个好 编辑:程序博客网 时间:2024/05/17 08:33

O(n)时间复杂度的naive解法也可以AC,但题目要求O(logN)时间复杂度,说明测试用例并不严格。

O(N)解法:

class Solution {public:    int findPeakElement(const vector<int> &num) {        int n=num.size();        if(n==0)        {            return -1;        }        if(n==1)        {            return 0;        }        if(num[1]<num[0])        {            return 0;        }        else        {            int index=1;            while((index<n)&&(num[index-1]<num[index]))            {                index++;            }            return index-1;        }    }};


参考了论坛大神的O(logN)解法:

class Solution {public:    int findPeakElement(const vector<int> &num)     {        int low = 0;        int high = num.size()-1;        while(low < high)        {            int mid1 = (low+high)/2;            int mid2 = mid1+1;            if(num[mid1] < num[mid2])                low = mid2;            else                high = mid1;        }        return low;    }};



0 0
原创粉丝点击