「每日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 协议 ,转载请注明出处!