Update 0376.摆动序列.md

增加python动态规划优化版
This commit is contained in:
roylx
2022-11-10 17:27:45 -07:00
committed by GitHub
parent 289e58b9b8
commit bec57550df

View File

@ -264,6 +264,25 @@ class Solution:
return max(dp[-1][0], dp[-1][1]) return max(dp[-1][0], dp[-1][1])
``` ```
```python
class Solution:
def wiggleMaxLength(self, nums: List[int]) -> int:
# up i作为波峰最长的序列长度
# down i作为波谷最长的序列长度
n = len(nums)
# 长度为0和1的直接返回长度
if n<2: return n
for i in range(1,n):
if nums[i]>nums[i-1]:
# nums[i] 为波峰1. 前面是波峰up值不变2. 前面是波谷down值加1
# 目前up值取两者的较大值(其实down+1即可可以推理前一步down和up最多相差1所以down+1>=up)
up = max(up, down+1)
elif nums[i]<nums[i-1]:
# nums[i] 为波谷1. 前面是波峰up+12. 前面是波谷down不变取较大值
down = max(down, up+1)
return max(up, down)
```
### Go ### Go
**贪心** **贪心**