P852 山脉数组的峰顶索引


题目

image-20210615183902448

分析

  • 直接的方法很容易想到
  • 二分也是可行的,只要对于分开的部分有可以判定的条件就可以二分

题解

  • 枚举
1
2
3
4
5
6
7
8
9
10
class Solution {
public int peakIndexInMountainArray(int[] arr) {
for(int i=0;i<arr.length;i++){
if(arr[i]>arr[i+1]){
return i;
}
}
return -1;
}
}

image-20210615190739309

时间复杂度 空间复杂度
O(n) O(1)
  • 二分
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public int peakIndexInMountainArray(int[] arr) {
int begin = 0;
int end = arr.length;
while(begin<end){
int mid = (begin+end)>>1;
if(arr[mid]<arr[mid+1]){
begin = mid+1;
}else{
end = mid;
}
}
return begin;

}
}

image-20210615190706326

时间复杂度 空间复杂度
O(logn) O(1)

一点屁话

  • 尽管二分常见,但是要一次过还是要注意奥

  • 另外这个排名很不稳定,运行每次都差得很大…


← Prev 部署 | P374 猜数字大小 Next →