250x250
반응형
Notice
Recent Posts
Recent Comments
Link
N
(Leet Code JS)Wiggle Subsequence 본문
728x90
반응형
https://leetcode.com/problems/wiggle-subsequence/
주어진 배열에서 조건에 맞는 길이의 최대값을 찾아야 한다.
인접한 수의 차가 + - + - ... or - + - +... 면 된다.
answer = 1부터 시작하는데, 이는 0번째 값은 무조건 답이 될 수 있는 최소값이 되기 때문이다.
flag를 이용해 현재 값 차이가 양수인지, 음수인지 확인한다.
1 ~ nums.length 까지 for문을 순회.
처음에는 flag = 0이기 때문에 else문에 들어간다.
값 차이가 양수면 flag = 1, 음수면 flag = -1로 설정하고 answer++을 해준다.
(diff === 0이면 그냥 넘어가기 때문에 answer나 flag를 고치지 않는다.)
flag가 있다면, 다음 순서가 양수인지, 음수인지 설정해주면 된다.
flag === 1이고 현재 값 차이가 음수라면 answer++을 해주고 flag = -1로 설정.
flag === -1이고 현재 값 차이가 양수라면 answer++을 해주고 flag = 1로 설정.
이 외의 경우는 넘어가도 되기 때문에 따로 설정을 안해줘도 된다.
마지막은 answer을 리턴한다.
var wiggleMaxLength = function(nums) {
let answer = 1;
let flag = 0;
for(let i = 1; i < nums.length; i++){
const diff = nums[i] - nums[i - 1];
if(flag){
if(flag === 1 && diff < 0){
answer++;
flag = -1;
} else if(flag === -1 && diff > 0){
answer++;
flag = 1;
}
} else{
if(diff > 0){
answer++;
flag = 1;
} else if(diff < 0){
answer++;
flag = -1;
}
}
}
return answer;
};
728x90
반응형
'Leet Code 알고리즘' 카테고리의 다른 글
(Leet Code JS)Game of Life (0) | 2022.07.30 |
---|---|
(Leet Code JS)Candy (0) | 2022.07.10 |
(Leet Code JS)Maximum Units on a Truck (0) | 2022.07.09 |
(Leet Code JS)Furthest Building You Can Reach (0) | 2022.07.03 |
(Leet Code JS)Non-decreasing Array (0) | 2022.06.28 |