접근
일단 wiggle sequence 를 판정하는 건 어렵지 않다.
index 순서로 순회하며 두 값의 차이가 +, -, +, - 를 반복하는 지 확인하면 됨.
+ 다음 - 가 오지 않으면 다음 인덱스로 넘어가서 다시 비교 비교 또 비교
그렇게.. 최대 길이를 구하면 될 듯
class Solution:
def wiggleMaxLength(self, nums: List[int]) -> int:
pre_gap = 0
now_gap = 0
count_length_sub = 1
if len(nums) != 1:
for num1, num2 in zip(nums, nums[1:]):
now_gap = num2 - num1
wiggle = now_gap * pre_gap
if wiggle < 0: # now_gap, pre_gap의 부호 반대
count_length_sub += 1
pre_gap = now_gap # wiggle 했을 때만 pre_gap의 값 변경
if pre_gap == 0 and now_gap != 0:
count_length_sub += 1
pre_gap = now_gap # 맨 첫번째 경우
else:
count_length_sub = 1
return(count_length_sub)
이제 if pre_gap == 0 and now_gap != 0:
쪽 같은 경우는,
맨 첫 번째 경우와, 시작부터 gap이 0인 경우를 예외처리하였다.