剑指 Offer II 069. 山峰数组的顶部(852. 山脉数组的峰顶索引)
题目:
思路:
【1】其实也没什么好思考的,题目给的数组就是山脉数组,可以理解为是有序的,其次,提示的复杂度就是叫你如何用二分去处理有序数组。
代码展示:
//时间复杂度O(N)的方式 //时间0 ms击败100% //内存41.6 MB击败67.49% class Solution { public int peakIndexInMountainArray(int[] arr) { int n = arr.length; int ans = -1; for (int i = 1; i < n - 1; ++i) { if (arr[i] > arr[i + 1]) { ans = i; break; } } return ans; } } //时间复杂度O(log(n))的方式 //时间0 ms击败100% //内存41.7 MB击败62.66% class Solution { public int peakIndexInMountainArray(int[] arr) { int n = arr.length; int left = 1, right = n - 2, ans = 0; while (left <= right) { int mid = (left + right) / 2; if (arr[mid] > arr[mid + 1]) { ans = mid; right = mid - 1; } else { left = mid + 1; } } return ans; } }