LeetCode每日一题,845. Longest Mountain in Array
先看题目描述
大意就是满足一下两个条件的数组 B 就被称为山脉
- B.length ≥ 3
- 存在一个 i,0 < i < B.length - 1,且 B[0] < B[1] < … < B[i] > B[i + 1] > … > B[B.length - 1]
给定一个数组 A,让我们返回数组中山脉的最长长度,若不存在山脉,则返回 0
算法和思路
大致思路就是用一个 index 指针来遍历数组,若 A[index] < A[index + 1],则当前元素在山脉的左半部分,则继续移动 index 指针,当到达当前山脉的顶点,即A[index] > A[index] + 1时,则之后元素在山脉的右半部分,继续移动指针直至到达右山脚,即 A[index] ≦ A[index + 1]时,则当前山脉结束,将当前山脉长度与最长山脉长度比较来维护最长山脉长度,就这样在移动 index 指针的过程中维护最长山脉长度,最后返回 res
注意:当 index 指针移动到当前山脉顶点时,若 A[index + 1] 与 A[index] 相等,则山脉没有右半部分,移动 index 指针来寻找下一个左山脚
算法源码
1 | class Solution { |