1 | 当 A 的子数组 A[i], A[i+1], ..., A[j] 满足下列条件时,我们称其为湍流子数组: |
我们可以定义两个子问题,分别对应最后一段上升和下降的波形子数组:
- 子问题 f(k) 为数组 A[0..k) 中,以 A[k-1] 结尾,且最后一段为“上升”的最长波形子数组;
- 子问题 g(k) 为数组 A[0..k) 中,以 A[k-1] 结尾,且最后一段为“下降”的最长波形子数组。
那么我们的子问题递推关系就变得清晰了起来:
- 如果 A[k-1] 和 A[k-2] 之间是“上升”,那么 $f(k) = g(k-1) + 1$,$g(k) = 1$;
- 如果 A[k-1] 和 A[k-2] 之间是“下降”,那么 $f(k) = 1$,$g(k) = f(k-1) + 1$;
- 如果 A[k-1] 和 A[k-2] 之间是“水平”,那么 $f(k) = 1$,$g(k) = 1$。
1 | class Solution { |
1 |
|
参考文献
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。