[leetcode] 162 Find Peak Element(二分)

原创 2015年11月19日 13:09:46

这题要求我们在一个无序的数组里找到一个peak元素,所谓peak,就是值比两边邻居大就可以了。

对于这道题目,最简单的解法就是遍历数组,只要找到第一个符合要求的元素就可以了,时间复杂度为On),但是这题要求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;
    }
};



版权声明:本文为博主原创文章,未经博主允许不得转载。

自然语言处理学习篇02——Edit Distance

第二章 Edit Distance 本篇内容将讲述Edit Distance(编辑距离的定义详见正文),具体又包含5个方面的内容: Defining Minimum Edit Di...

动态规划 求解 Minimum Edit Distance

自然语言处理(NLP)中,有一个基本问题就是求两个字符串的minimal Edit Distance, 也称Levenshtein distance。受到一篇Edit Distance介绍文章的启发,...

【LeetCode】 162. Find Peak Element

162. Find Peak Element介绍

LeetCode 162. Find Peak Element

LeetCode 162. Find Peak Element 两种办法

<LeetCode OJ> 162. Find Peak Element

162. Find Peak ElementMy SubmissionsQuestion Total Accepted: 56981 Total Submissions: 174002 Difficu...

LeetCode - 162. Find Peak Element

题目中给出了一个很重要的假设,就是数组左侧左边和右侧右边的数都是负无穷大,所以我们可以采用一个很方便的算法进行计算。 我们从index为1的时候开始扫描整个数组,比较nums[i]和nums[i -...

Leetcode 162 Find Peak Element 查找峰值元素(极大值)

给出一个不含重复元素的数组num,找出其中的峰值元素(极大值)并返回其索引(下标)值....

LeetCode(162) Find Peak Element

题目如下: A peak element is an element that is greater than its neighbors. Given an input array where nu...

【leetcode】162. Find Peak Element

Difficulty:medium A peak element is an element that is greater than its neighbors. Given...

Find Peak Element - LeetCode 162

题目描述: A peak element is an element that is greater than its neighbors. Given an input array where nu...
  • bu_min
  • bu_min
  • 2015年05月16日 21:22
  • 230
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[leetcode] 162 Find Peak Element(二分)
举报原因:
原因补充:

(最多只允许输入30个字)