就是普通的历遍,没什么说的
public class Solution {
public int findPeakElement(int[] num) {
if(num.length==0)
return 0;
int max = num[0];
int dex=0;
for(int i=0;i<num.length;i++){
if(num[i]>max){
max=num[i];
dex=i;
}
}
return dex++;
}
}
Update 2015/08/30: 上面的解法不对,上面的复杂度是n,而题目要求的是logn,一般logn想到的就是二分,下面就是二分的变种
class Solution {
/**
* @param A: An integers array.
* @return: return any of peek positions.
*/
public int findPeak(int[] A) {
// write your code here
// write your code here
int start = 1, end = A.length-2; // 1.答案在之间,2.不会出界
while(start + 1 < end) {
int mid = (start + end) / 2;
if(A[mid] < A[mid - 1]) {
end = mid;
} else if(A[mid] < A[mid + 1]) {
start = mid;
} else {
end = mid;
}
}
if(A[start] < A[end]) {
return end;
} else {
return start;
}
}
}