【LeetCode】(162)Find Peak Element(Medium)

来源:互联网 发布:大数据分析工作 编辑:程序博客网 时间:2024/05/23 20:17

题目

Find Peak Element

 Total Accepted: 36800 Total Submissions: 115427My Submissions

A peak element is an element that is greater than its neighbors.

Given an input array where num[i] ≠ num[i+1], find a peak element and return its index.

The array may contain multiple peaks, in that case return the index to any one of the peaks is fine.

You may imagine that num[-1] = num[n] = -∞.

For example, in array [1, 2, 3, 1], 3 is a peak element and your function should return the index number 2.

click to show spoilers.















解析

就是顺序去比较就好了,不过需要考虑一些特殊情况,只有一个元素,只有两个元素,极值在最左边或者最右边。

class Solution {public:    int findPeakElement(vector<int>& nums) {        if (nums.size() == 1)return 0;if (nums.size() == 2)return nums[0]>nums[1]?0:1;         for (int i = 1;i<nums.size();i++)  {if (nums[i]>nums[i-1] && nums[i] > nums[i+1]) {   return i; }   }return nums[0]>nums.back()?0:nums.size()-1;    }};
网上有一个差不多,不过思路要清晰一些的,代码来自http://www.cnblogs.com/ganganloveu/p/4147655.html

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








0 0