[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;
    }
};



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

leetcode 162. Find Peak Element-查找峰元素|二分查找

原题链接:162. Find Peak Element 【思路-Java、Python】 二分查找 题目中已经说明,最左端和最右端元素均无限小,中间元素比两侧都要大,那么本题中一定存在一个峰元素。...
  • happyaaaaaaaaaaa
  • happyaaaaaaaaaaa
  • 2016年06月05日 16:47
  • 1912

LeetCode(162) Find Peak Element

题目如下: A peak element is an element that is greater than its neighbors. Given an input array where nu...
  • feliciafay
  • feliciafay
  • 2015年01月01日 16:36
  • 2000

Find Peak Element --leetcode

原题链接:https://oj.leetcode.com/problems/find-peak-element/ 题目大意:给定一个相邻元素不相等的数组,找出其中的一个局部最大值,返回对应下标。 ...
  • u010367506
  • u010367506
  • 2014年12月15日 14:25
  • 10567

Leetcode_162_Find Peak Element

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/43415313 A peak element is...
  • pistolove
  • pistolove
  • 2015年02月02日 21:04
  • 1152

Leetcode 162 - Find Peak Element(二分)

题意给定一个数组,找任意一个极大值。思路算法1暴力用vector维护一个单调减的序列。最后返回第一个元素就好。算法2首先,只有一个元素的时候我们特判一下。然后我们在求极值点的时候,假设当前位置在m,那...
  • Lzedo
  • Lzedo
  • 2017年02月12日 17:25
  • 75

Leetcode 162: Find Peak Element

A peak element is an element that is greater than its neighbors. Given an input array where num[i...
  • dolphin_wby
  • dolphin_wby
  • 2015年12月15日 08:29
  • 122

[Leetcode 162] Find Peak Element

A peak element is an element that is greater than its neighbors. Given an input array where num[i...
  • sbitswc
  • sbitswc
  • 2015年08月14日 13:19
  • 351

LeetCode 162 Find Peak Element

A peak element is an element that is greater than its neighbors. Given an input array where num[i...
  • linian71
  • linian71
  • 2015年04月03日 00:27
  • 316

Leetcode Find Peak Element 162

A peak element is an element that is greater than its neighbors.Given an input array where num[i] ≠ ...
  • huaxixidongbeishida
  • huaxixidongbeishida
  • 2017年01月14日 20:33
  • 326

leetcode 162: Find Peak Element

Go from two sides of the array and check simultaneously whether there is a peak element. I add a con...
  • mikefan1991
  • mikefan1991
  • 2015年08月23日 00:46
  • 84
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[leetcode] 162 Find Peak Element(二分)
举报原因:
原因补充:

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