标签:
这道题基于的特质是,如果是一个递减序列,那么左起第一个数就是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 }
标签:
原文地址:http://www.cnblogs.com/warmland/p/5625569.html