MergeNodesBetweenZeros

Published at 2023-01-21

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def mergeNodes(self, head: Optional[ListNode]) -> Optional[ListNode]:
        p1 = head  # 구한 합계를 업뎃하기 위한 포인터(slow)
        p2 = head.next  # 노드 순회해가면서 합계에 저장하기 위한 포인터(fast)
        sums = 0
        while p2:
            if p2.val:
                sums += p2.val
            else:
                p1 = p1.next
                p1.val = sums
                sums = 0
            p2 = p2.next
        p1.next = None
        return head.next