本文共 981 字,大约阅读时间需要 3 分钟。
你给出一个整数数组(size为n),其具有以下特点:
相邻位置的数字是不同的
A[0] < A[1] 并且 A[n - 2] > A[n - 1] 假定P是峰值的位置则满足A[P] > A[P-1]且A[P] > A[P+1],返回数组中任意一个峰值的位置。class Solution { /** * @param A: An integers array. * @return: return any of peek positions. */ public int findPeak(int[] A) { // write your code here int start = 0; int end = A.length - 1; int mid = 0; while (start + 1 < end) { mid = start + (end - start) / 2; if (A[mid - 1] < A[mid] && A[mid] > A[mid + 1]) { return mid; } if (A[mid - 1] < A[mid] && A[mid] < A[mid + 1]) { // 上升区间 start = mid; continue; } if (A[mid - 1] > A[mid] && A[mid] > A[mid + 1]) { // 下降区间 end = mid; continue; } start = mid; } if (A[start] < A[end]) { return end; } else { return start; } }}
转载地址:http://gxkei.baihongyu.com/