【leetcode】Find Peak Element
来源:互联网 发布:java ee eclipse教程 编辑:程序博客网 时间:2024/05/21 16:21
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.
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.
关键在于考虑一些边界的情况,如i=0和i=num.size()的情况
class Solution {public: int findPeakElement(const vector<int> &num) { if(num.size()==1) return 0; if(num.size()==2 && num[0]<num[1]) return 1; if(num.size()==2 && num[0]>num[1]) return 0; for(int i=0;i<num.size();i++) { if(i==0 && num[i]>num[i+1] ) return 0; if(i==num.size()-1 && num[i]>num[i-1]) return i; if(num[i]>num[i-1] && num[i]>num[i+1]) return i; } }};
但是时间复杂度为O(log(n))的时候,需要用二分法
int findPeakElement(const vector<int> &num) { int left=0,right=num.size()-1; while(left<=right){ if(left==right) return left; int mid=(left+right)/2; if(num[mid]<num[mid+1]) left=mid+1; else right=mid; } }
网上看到的另外一个好的方法
仔细分析下,不满足判断条件会导致i++, 也就是 num[i-1]>num[i-2],再满足条件的话,就有num[i] < num[i-1],因此i-1为峰值点。
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; }
0 0
- [LeetCode] Find Peak Element
- Leetcode:Find Peak Element
- LeetCode Find Peak Element
- leetcode: Find Peak Element
- leetcode:Find Peak Element
- LeetCode Find Peak Element
- Find Peak Element --leetcode
- Leetcode Find Peak Element
- [LeetCode] Find Peak Element
- Leetcode Find Peak Element
- Leetcode: Find Peak Element
- 【leetcode】Find Peak Element
- leetcode:Find Peak Element
- 【Leetcode】Find Peak Element
- LeetCode:Find Peak Element
- LeetCode:Find Peak Element
- [LeetCode] Find Peak Element
- LeetCode Find Peak Element
- jQuery-再叙when方法
- 永久更新google hosts的一些站点
- 第三人视角,摄像机跟随代码
- 学习笔记:Objective C 的内存管理(1)----引用计数器
- 网络编程(使用第三方框架和不使用第三方框架)
- 【leetcode】Find Peak Element
- Android Launcher分析和修改1——Launcher默认界面配置(default_workspace)
- Single Number II
- NSSArray和NSSet遍历哪个更快
- intellij idea14 无法自动编译
- iOS开发之二维码的生成
- 系统下载基地
- Overriding && Overloading
- (2.3.2.1)Redies在windows上的安装