链接: https://oj.leetcode.com/problems/find-peak-element/
题目要求复杂度在对数级以内
对数组下标进行二分搜索,
public class Solution { public int findPeakElement(int [] num) { int l=0,r=num.length-1; int mid=(l+r)/2; while(r-l>1) //按下标二分搜索 { mid=(l+r)/2; if(num[mid-1]<num[mid]&&num[mid]>num[mid+1]) return mid; if(num[mid-1]>num[mid+1]) { r=mid; continue; } if(num[mid-1]<num[mid+1]) { l=mid; continue; } if(num[mid-1]==num[mid+1]) { if(l==0) { if(num[l]>num[l+1]) return l; else { l++; continue; } } if(l!=0) { if(num[l-1]<num[l]&&num[l]>num[l+1]) return l; else { l++; continue; } } } } return num[l]>num[r]?l:r; } }
天下武功,唯快不破