[leetcode]162. Find Peak Element解题所感

我的代码如下:


class Solution {

public:
    int findPeakElement(vector<int>& nums) {
        if(nums.size() == 1)    return 0;
        if(nums[0] > nums[1])   return 0;
        if(nums[nums.size() - 1] > nums[nums.size() - 2])    return nums.size() - 1;
        for(int i = 1; i < nums.size(); ++i){
            
            if(nums[i-1] < nums[i] && nums[i] > nums[i+1])
                return i;
        }
    }

};


复杂度高达O(n),理论上会比很多人用的二分法慢,但实际上上述算法运行效率是高于很多使用二分法的程序,因为题目要求只要找到一个峰就够了,所以个人认为看一个程序的好坏有时候还需结合具体需求,而不是单纯地分析理论复杂度(更何况上述程序更易理解)。

猜你喜欢

转载自blog.csdn.net/qq_35985044/article/details/78417678
今日推荐