首页 > 代码库 > 【LeetCode】Find Peak Element (3 solutions)
【LeetCode】Find Peak Element (3 solutions)
Find Peak Element
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.
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.
Note:
Your solution should be in logarithmic complexity.
这题就是求序列最大值。顺序查找或二分查找均可。
满足复杂度要求的话需要用二分查找。
解法一:顺序查找
class Solution {public: int findPeakElement(const vector<int> &num) { for(int i = 1; i < num.size(); i ++) { if(num[i] < num[i-1]) {// < return i-1; } } return num.size()-1; }};
解法二:二分查找(递归)
class Solution {public: int findPeakElement(const vector<int> &num) { return Helper(num, 0, num.size()-1); } int Helper(const vector<int> &num, int low, int high) { if(low == high) return low; else { int mid1 = (low+high)/2; int mid2 = mid1+1; if(num[mid1] > num[mid2]) return Helper(num, low, mid1); else return Helper(num, mid2, high); } }};
解法三:二分查找(迭代)
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; }};
【LeetCode】Find Peak Element (3 solutions)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。