「每日LeetCode」2021年8月20日
本文最后更新于:2023年3月19日 晚上
剑指 Offer II 069. 山峰数组的顶部
剑指 Offer II 069. 山峰数组的顶部
符合下列属性的数组 arr 称为 山峰数组(山脉数组) :
- arr.length >= 3
- 存在i(0 < i < arr.length - 1)使得:- arr[0] < arr[1] < ... arr[i-1] < arr[i]
- arr[i] > arr[i+1] > ... > arr[arr.length - 1]
 
给定由整数组成的山峰数组 arr ,返回任何满足 arr[0] < arr[1] < ... arr[i - 1] < arr[i] > arr[i + 1] > ... > arr[arr.length - 1] 的下标 i ,即山峰顶部。
示例 1:
| 1 |  | 
示例 2:
| 1 |  | 
示例 3:
| 1 |  | 
示例 4:
| 1 |  | 
示例 5:
| 1 |  | 
提示:
- 3 <= arr.length <= 10
- 0 <= arr[i] <= 10
- 题目数据保证 arr是一个山脉数组
进阶:很容易想到时间复杂度 O(n) 的解决方案,你可以设计一个 O(log(n)) 的解决方案吗?
思路
左右指针,求出中点,寻找符合条件的最左端,比较中点及他下一个的点大小,判断上坡还是下坡。下坡的话,说明山顶在当前节点或左侧,将右指针指向中点;非下坡的情况,说明山顶在当前节点的右边将左指针移向中点右侧。
解答
| 1 |  | 
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!