diff --git a/problems/0376.摆动序列.md b/problems/0376.摆动序列.md index 08de23ae..943dfe39 100644 --- a/problems/0376.摆动序列.md +++ b/problems/0376.摆动序列.md @@ -33,11 +33,13 @@ - 输入: [1,2,3,4,5,6,7,8,9] - 输出: 2 -# 视频讲解 +## 算法公开课 -**《代码随想录》算法视频公开课:[贪心算法,寻找摆动有细节!| LeetCode:376.摆动序列](https://www.bilibili.com/video/BV17M411b7NS),相信结合视频在看本篇题解,更有助于大家对本题的理解**。 +**[《代码随想录》算法视频公开课](https://programmercarl.com/other/gongkaike.html):[贪心算法,寻找摆动有细节!| LeetCode:376.摆动序列](https://www.bilibili.com/video/BV17M411b7NS),相信结合视频在看本篇题解,更有助于大家对本题的理解**。 -## 思路 1(贪心解法) +## 思路 + +### 思路 1(贪心解法) 本题要求通过从原始序列中删除一些(也可以不删除)元素来获得子序列,剩下的元素保持其原始顺序。 @@ -69,7 +71,7 @@ 2. 情况二:数组首尾两端 3. 情况三:单调坡中有平坡 -### 情况一:上下坡中有平坡 +#### 情况一:上下坡中有平坡 例如 [1,2,2,2,1]这样的数组,如图: @@ -87,7 +89,7 @@ 所以我们记录峰值的条件应该是: `(preDiff <= 0 && curDiff > 0) || (preDiff >= 0 && curDiff < 0)`,为什么这里允许 prediff == 0 ,就是为了 上面我说的这种情况。 -### 情况二:数组首尾两端 +#### 情况二:数组首尾两端 所以本题统计峰值的时候,数组最左面和最右面如何统计呢? @@ -142,7 +144,7 @@ public: 所以此时我们要讨论情况三! -### 情况三:单调坡度有平坡 +#### 情况三:单调坡度有平坡 在版本一中,我们忽略了一种情况,即 如果在一个单调坡度上有平坡,例如[1,2,2,2,3,4],如图: @@ -187,7 +189,7 @@ public: ![](https://code-thinking-1253855093.file.myqcloud.com/pics/20230108174452.png) -## 思路 2(动态规划) +### 思路 2(动态规划) 考虑用动态规划的思想来解决这个问题。 @@ -696,4 +698,3 @@ object Solution { -