Find Peak Element:寻找数列中的局部峰值
来源:互联网 发布:淘宝网图标放桌面 编辑:程序博客网 时间:2024/06/12 20:23
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.
Note:
思路一:从头遍历,寻找峰值。复杂度O(n)Your solution should be in logarithmic complexity.
class Solution { public int findPeakElement(int[] nums) { if(nums.length==0) return -1; if(nums.length==1) return 0; Stack<Integer> s = new Stack<Integer>(); for(int i = 0;i<nums.length;i++){ if(s.isEmpty()){ s.push(nums[i]); }else{ int temp = s.peek(); if(temp<nums[i]){ s.push(nums[i]); }else{ return i-1; } } } return nums.length-1; }}思路二:这类的题就不能从头遍历,可以考虑二分查找。既然是局部峰值,那么查找局部最大值即可。复杂度O(logN)
class Solution { public int findPeakElement(int[] nums) { if(nums.length==0) return -1; if(nums.length==1) return 0; int l = 0; int r = nums.length-1; while(l<r){ int m1 =(l+r)/2; int m2 = m1+1; if(nums[m1]<nums[m2]){ l = m2; }else{ r = m1; } } return l; }}
阅读全文
0 0
- Find Peak Element:寻找数列中的局部峰值
- 162.Find Peak Element (寻找数组中的峰值点)
- [Lintcode]Find Peak Element 寻找峰值
- [C++]LeetCode: 118 Find Peak Element (二分查找 寻找数组局部峰值)
- 75.Find Peak Element-寻找峰值(中等题)
- 【LeetCode】162.Find Peak Element 寻找峰值(二分法)
- leetcode162---Find Peak Element(找峰值点)
- LintCode Find Peak Element(查找峰值)
- Leetcode 162 Find Peak Element 查找峰值元素(极大值)
- Find Peak Element-找出峰值元素w问题描述
- LeetCode 162. Find Peak Element(查找峰值)
- LintCode Find Peak Element II(查找峰值II)
- Find Peak Element 寻找最大的数
- LeetCode-162. Find Peak Element (JAVA)寻找peak元素
- 寻找数组局部峰值
- [LeetCode] Find Peak Element
- Find Peak Element
- Leetcode:Find Peak Element
- 提交输入框内容到文本域 公告窗
- Hadoop的磁盘写入策略引发的问题
- libpointmatcher配置
- 百度2017春招笔试真题编程题集合
- AngularJS 内置服务 ~ $timeout设置定时器(只调用一次)
- Find Peak Element:寻找数列中的局部峰值
- Fiddler抓包3-工具介绍(request和response)
- SQL笔记-on和where的区别
- MySQL学习之1安装
- JAVA设计模式之单例模式
- Java并发编程:volatile关键字解析
- 数据结构——链表—一元多项式的表示及相加
- HDPCD-Java-复习笔记(8)- lab
- 职业罗盘1