376. 摆动序列
思路:模拟
遇到不是摆动的数对,直接跳到下一个数对即可。
需要注意的是,特判一下数对中两值相同时的情况
class Solution:
def wiggleMaxLength(self, nums: List[int]) -> int:
n = len(nums)
if n<2 : return n
ans,k = 2,-1
for i in range(n-1):
if nums[i]!=nums[i+1]:
k = i
break
if k==-1: return 1
else:
store = nums[k+1] - nums[k]
for i in range(k+1,n-1):
judge = store*(nums[i+1]-nums[i])
if judge < 0:
ans += 1
store = nums[i+1]-nums[i]
else:
continue
return ans
时间复杂度O(n)
空间复杂度O(1)