image.png
image.png
)
日期 | 是否一次通过 | comment |
---|---|---|
2019-11-24 |
数组可能是以下几个情况的组合:
- 单调递增 --- 最后一个是波峰
- 先增后减 --- 中间是波峰
- 单调递减 --- 第一个是波峰
- 先减后增 --- 第一个是波峰
暴搜 or 二分查找都可
public int findPeakElement(int[] nums) {
for(int i=1; i<= nums.length-1; i++) {
if(nums[i] < nums[i-1]) {
return i-1;
}
}
return nums.length-1;
}
public int findPeakElement1(int[] nums) {
if(nums == null || nums.length <= 1){
return 0;
}
int sta = 0, end = nums.length - 1;
while(sta + 1 < end){ // 保证sta和end中间一定有一个元素;mid+1一定不会越界
int mid = sta + (end - sta)/2;
if(nums[mid] < nums[mid + 1]){
sta = mid;
} else {
end = mid;
}
}
if(nums[sta] > nums[end]) {
return sta;
}
return end;
}