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