Leetcode Java Remove Zero Sum Consecutive Nodes from Linked List
업데이트:
문제
코드
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode removeZeroSumSublists(ListNode head) {
if (head == null) {
return head;
}
ListNode curr = head;
int sum = 0;
while (curr != null) {
sum += curr.val;
if (sum == 0) {
return this.removeZeroSumSublists(curr.next);
} else {
curr = curr.next;
}
}
head.next = this.removeZeroSumSublists(head.next);
return head;
}
}
결과
설명
-
head 내 연속된 값의 합이 0이 되는 노드를 제거하는 문제이다.
-
head가 null인 경우, head를 그대로 반환한다.
- 문제 풀이에 필요한 변수를 정의한다.
- curr은 현재 ListNode를 저장할 변수로, head로 넣어준다.
- sum은 노드의 합을 저장할 변수로, 0으로 초기화한다.
- curr이 null이 아닐 때까지 아래를 반복한다.
- sum에 curr의 val 값을 더해준다.
- sum이 0인 경우, 현재까지의 노드들을 무시하기 위해서 curr의 다음 ListNode로 재귀 호출한 결과를 반환한다.
- sum이 0이 아닌 경우, curr에 curr의 다음 ListNode를 넣어 반복을 계속 수행한다.
- 반복이 완료되면 head의 다음 ListNode에 해당 ListNode로 재귀 호출한 결과를 넣어준 후 완성된 head를 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기