LeetCode in Kotlin

2181. Merge Nodes in Between Zeros

Medium

You are given the head of a linked list, which contains a series of integers separated by 0’s. The beginning and end of the linked list will have Node.val == 0.

For every two consecutive 0’s, merge all the nodes lying in between them into a single node whose value is the sum of all the merged nodes. The modified list should not contain any 0’s.

Return the head of the modified linked list.

Example 1:

Input: head = [0,3,1,0,4,5,2,0]

Output: [4,11]

Explanation:

The above figure represents the given linked list. The modified list contains

Example 2:

Input: head = [0,1,0,3,0,2,2,0]

Output: [1,3,4]

Explanation:

The above figure represents the given linked list. The modified list contains

Constraints:

Solution

import com_github_leetcode.ListNode

/*
 * Example:
 * var li = ListNode(5)
 * var v = li.`val`
 * Definition for singly-linked list.
 * class ListNode(var `val`: Int) {
 *     var next: ListNode? = null
 * }
 */
class Solution {
    fun mergeNodes(head: ListNode): ListNode? {
        var temp = head.next
        var slow = head
        var sum = 0
        var fast = temp
        while (temp != null) {
            if (temp.`val` == 0) {
                temp.`val` = sum
                sum = 0
                slow.next = fast!!.next
                slow = temp
                fast = fast.next
            } else {
                sum += temp.`val`
                fast = temp
            }
            temp = temp.next
        }
        return head.next
    }
}
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy