[leetcode] 162 Find Peak Element(二分)
来源:互联网 发布:水冶豫广网络缴费 编辑:程序博客网 时间:2024/06/07 03:50
这题要求我们在一个无序的数组里找到一个peak元素,所谓peak,就是值比两边邻居大就可以了。
对于这道题目,最简单的解法就是遍历数组,只要找到第一个符合要求的元素就可以了,时间复杂度为O(n),但是这题要求O(LogN)的时间复杂度,还可以用二分来做。
首先我们找到中间节点mid,如果大于两边返回当前的index就可以了,如果左边的节点比mid大,那么我们可以继续在左半区间查找,这里面一定存在一个peak,为什么这么说呢?假设此时的区间范围为[0,mid-1],因为num[mid-1]一定大于num[mid],如果num[mid-2]<=num[mid-1],那么num[mid-1]就是一个peak。如果num[mid-2]>num[mid-1],那么我们就继续在[0,mid-2]区间查找,因为num[-1]为负无穷,所以我们最终绝对能在左半区间找到一个peak。同理右半区间一样。
class Solution {public: int findPeakElement(vector<int>& nums) { int left=0,right=nums.size()-1; while(left<right){ int mid1=(left+right)/2; int mid2=mid1+1; if(nums[mid1]<nums[mid2]) left=mid2; else right=mid1;} return left; }};
1 0
- [leetcode] 162 Find Peak Element(二分)
- Leetcode 162 - Find Peak Element(二分)
- leetcode-二分查找:Find Peak Element
- LeetCode Find Peak Element(二分查找法)
- LeetCode(162) Find Peak Element
- [leetcode 162] Find Peak Element
- leetcode-162 Find Peak Element
- [LeetCode 162]Find Peak Element
- LeetCode 162 Find Peak Element
- [leetcode] #162 Find Peak Element
- Find Peak Element - LeetCode 162
- Leetcode[162]-Find Peak Element
- leetcode-162-Find Peak Element
- !leetcode[162]:Find Peak Element
- LeetCode(162) Find Peak Element
- [Leetcode 162] Find Peak Element
- leetcode 162: Find Peak Element
- Leetcode #162 Find Peak Element
- SQLServer错误目录(持续更新中···)
- 用adb将手机/data/data/com.android.providers.contacts/databases下的contacts2.db拷贝到电脑上
- STL中sort()的相关运用
- 黑马程序员--Java笔记06--多态
- linux搭建git服务器
- [leetcode] 162 Find Peak Element(二分)
- 黑马程序员--Java笔记07--异常
- Android NDK 环境搭建 之 起始篇NDK HelloWorld
- Composite(组合)设计模式
- 黑马程序员--Java笔记08--多线程 创建、安全问题、线程间通信
- 多线程中栈空间的分配 http://biancheng.dnbcw.info/linux/303270.html
- PhoneGap插件调用Java流程源码分析(三)
- 《第一行代码--Android》读书笔记之碎片
- ---Maya&Python---001---