码迷,mamicode.com
首页 > 其他好文 > 详细

162. Find Peak Element

时间:2016-06-29 06:38:13      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:

这道题基于的特质是,如果是一个递减序列,那么左起第一个数就是peak element,如果是递增数列,那么右侧第一个是

所以可以使用二分搜索,如果一个mid本身并不是peak element,那么它如果比右侧大的话,那么说明左侧(包括它自己)一定有一个最优解,否则右侧(不包括它自己)一定有一个最优解。

 

 1     public int findPeakElement(int[] nums) {
 2         if(nums.length == 0) {
 3             return -1;
 4         }
 5         int left = 0; 
 6         int right = nums.length - 1;
 7         while(left <= right) {
 8             if(left == right) {
 9                 return left;
10             }
11             int mid = left + (right - left) / 2;
12             if(nums[mid] > nums[mid + 1]) {
13                 right = mid;
14             } else {
15                 left = mid + 1;
16             }
17         }
18         return left;
19     }

 

162. Find Peak Element

标签:

原文地址:http://www.cnblogs.com/warmland/p/5625569.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!