DEV Community

Cover image for 2181. Merge Nodes in Between Zeros
MD ARIFUL HAQUE
MD ARIFUL HAQUE

Posted on • Edited on

1

2181. Merge Nodes in Between Zeros

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:

ex1-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
    • The sum of the nodes marked in green: 3 + 1 = 4.
    • The sum of the nodes marked in red: 4 + 5 + 2 = 11.

Example 2:

ex2-1

  • 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
    • The sum of the nodes marked in green: 1 = 1.
    • The sum of the nodes marked in red: 3 = 3.
    • The sum of the nodes marked in yellow: 2 + 2 = 4.

Constraints:

  • The number of nodes in the list is in the range [3, 2 * 105].
  • 0 <= Node.val <= 1000
  • There are no two consecutive nodes with Node.val == 0.
  • The beginning and end of the linked list have Node.val == 0.

Solution:

/**
 * Definition for a singly-linked list.
 * class ListNode {
 *     public $val = 0;
 *     public $next = null;
 *     function __construct($val = 0, $next = null) {
 *         $this->val = $val;
 *         $this->next = $next;
 *     }
 * }
 */
class Solution {

    /**
     * @param ListNode $head
     * @return ListNode
     */
    function mergeNodes($head) {
        $dummy = new ListNode(0);
        $current = $dummy;
        $sum = 0;

        // Skip the first zero node
        $head = $head->next;

        while ($head !== null) {
            if ($head->val == 0) {
                $current->next = new ListNode($sum);
                $current = $current->next;
                $sum = 0;
            } else {
                $sum += $head->val;
            }
            $head = $head->next;
        }

        return $dummy->next;
    }
}
Enter fullscreen mode Exit fullscreen mode

Contact Links

If you found this series helpful, please consider giving the repository a star on GitHub or sharing the post on your favorite social networks 😍. Your support would mean a lot to me!

If you want more helpful content like this, feel free to follow me:

Image of Datadog

How to Diagram Your Cloud Architecture

Cloud architecture diagrams provide critical visibility into the resources in your environment and how they’re connected. In our latest eBook, AWS Solution Architects Jason Mimick and James Wenzel walk through best practices on how to build effective and professional diagrams.

Download the Free eBook

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more