def wigglemaxlength_two(nums):
'''up[j]表示當前元素較上乙個元素是公升序狀態,所以要找到與公升序狀態之前最近的逆序的狀態的長度down[j-1],到i時當前序列的最長的擺動陣列的長度
down[j]表示當前元素較上乙個元素是逆序的長度,到i時當前序列的最長的擺動陣列的長度
空間複雜度是o(n2)
'''n = len(nums)
up = [1 for i in range(n)]
down = [1 for i in range(n)]
for j in range(1,n):
if nums[j-1] < nums[j]:
up[j] = down[j-1] + 1
down[j] = down[j-1]
elif nums[j-1] > nums[j]:
down[j] = up[j-1] +1
up[j] = up[j-1]
else:
down[j] = down[j - 1]
up[j] = up[j - 1]
print(down,up)
return max(down[-1],up[-1])
def wigglemaxlength(nums):
'''空間複雜度o(1)
'''if len(nums) < 2:
return len(nums)
state = 'begin'
max_length = 1
for i in range(1, len(nums)):
if nums[i] > nums[i - 1] and state != 'up':
max_length += 1
state = 'up'
elif nums[i] < nums[i - 1] and state != 'down':
max_length += 1
state = 'down'
return max_length
Leetcode 376 擺動序列
如果連續數字之間的差嚴格地在正數和負數之間交替,則數字序列稱為擺動序列。第乙個差 如果存在的話 可能是正數或負數。少於兩個元素的序列也是擺動序列。例如,1,7,4,9,2,5 是乙個擺動序列,因為差值 6,3,5,7,3 是正負交替出現的。相反,1,4,7,2,5 和 1,7,4,5,5 不是擺動序...
leetcode376擺動序列
如果連續數字之間的差嚴格地在正數和負數之間交替,則數字序列稱為擺動序列。第乙個差 如果存在的話 可能是正數或負數。少於兩個元素的序列也是擺動序列。例如,1,7,4,9,2,5 是乙個擺動序列,因為差值 6,3,5,7,3 是正負交替出現的。相反,1,4,7,2,5 和 1,7,4,5,5 不是擺動序...
Leetcode 376 擺動序列
如果連續數字之間的差嚴格地在正數和負數之間交替,則數字序列稱為擺動序列。第乙個差 如果存在的話 可能是正數或負數。少於兩個元素的序列也是擺動序列。例如,1,7,4,9,2,5 是乙個擺動序列,因為差值 6,3,5,7,3 是正負交替出現的。相反,1,4,7,2,5 和 1,7,4,5,5 不是擺動序...