250x250
반응형
Notice
Recent Posts
Recent Comments
Link
N
(Leet Code JS)Merge Nodes In Between Zeros 본문
728x90
반응형
https://leetcode.com/problems/merge-nodes-in-between-zeros/
주어진 연결 리스트에서 0으로 된 노드 사이의 값을 더하여 새로운 연결 리스트로 반환하면 된다.
우선 answer를 new ListNode()로 선언한다.
그리고 head 내부에 있는 값을 배열에 저장하기 위해 arr 배열을 선언.
0 노드 사이의 값을 더하기 위한 sum과 포인터인 current를 선언한다.
current는 head를 가리켜 arr에 값을 저장하도록 한다.
while문으로 head를 한 번 순회한다.
current !== null 때 까지 반복.
순회를 할 때에는 노드의 값을 더하여 arr에 저장한다.
0이 아닌 수는 sum에 더하고, 만약 노드에서 0을 만나게 되고 sum이 0이 아니라면 arr에 넣어준다.
또한, sum = 0으로 초기화.
current는 계속 다음 노드를 가리키도록 한다.
순회가 끝나면 current = answer로 하여 이제 정답을 맞춰나가도록 한다.
arr 배열을 순회.
current.val = arr[i]로 하여 answer.val = 0 노드 사이의 합을 저장하도록 한다.
또한, arr의 마지막에는 null을 가리켜야 하기 때문에,
i < arr.length - 1 인 경우에만
current가 다음 노드를 생성하도록 한다.
var mergeNodes = function(head) {
const answer = new ListNode();
const arr =[];
let current = head;
let sum = 0;
while(current !== null){
if(current.val !== 0){
sum += current.val;
} else{
if(sum !== 0){
arr.push(sum);
sum = 0;
}
}
current = current.next;
}
current = answer;
for(let i = 0; i < arr.length; i++){
current.val = arr[i];
if(i < arr.length - 1){
current.next = new ListNode();
current = current.next;
}
}
return answer;
};
728x90
반응형
'Leet Code 알고리즘' 카테고리의 다른 글
(Leet Code JS)Longest Consecutive Sequence (0) | 2022.05.09 |
---|---|
(Leet Code JS)Flatten a Multilevel Doubled Linked List (0) | 2022.04.12 |
(Leet Code JS)Last Stone Weight (0) | 2022.04.07 |
(Leet Code JS)Find First and Last Position of Element in Sorted Array (0) | 2022.04.04 |
(Leet Code JS)Swapping Nodes in a Linked List (0) | 2022.04.04 |