首页 > 其他 > 详细

162. Find Peak Element

时间:2016-06-29 06:37:02      阅读:243      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!