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 n…


This content originally appeared on DEV Community and was authored by MD ARIFUL HAQUE

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;
    }
}


This content originally appeared on DEV Community and was authored by MD ARIFUL HAQUE


Print Share Comment Cite Upload Translate Updates
APA

MD ARIFUL HAQUE | Sciencx (2024-07-04T16:08:34+00:00) 2181. Merge Nodes in Between Zeros. Retrieved from https://www.scien.cx/2024/07/04/2181-merge-nodes-in-between-zeros/

MLA
" » 2181. Merge Nodes in Between Zeros." MD ARIFUL HAQUE | Sciencx - Thursday July 4, 2024, https://www.scien.cx/2024/07/04/2181-merge-nodes-in-between-zeros/
HARVARD
MD ARIFUL HAQUE | Sciencx Thursday July 4, 2024 » 2181. Merge Nodes in Between Zeros., viewed ,<https://www.scien.cx/2024/07/04/2181-merge-nodes-in-between-zeros/>
VANCOUVER
MD ARIFUL HAQUE | Sciencx - » 2181. Merge Nodes in Between Zeros. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/07/04/2181-merge-nodes-in-between-zeros/
CHICAGO
" » 2181. Merge Nodes in Between Zeros." MD ARIFUL HAQUE | Sciencx - Accessed . https://www.scien.cx/2024/07/04/2181-merge-nodes-in-between-zeros/
IEEE
" » 2181. Merge Nodes in Between Zeros." MD ARIFUL HAQUE | Sciencx [Online]. Available: https://www.scien.cx/2024/07/04/2181-merge-nodes-in-between-zeros/. [Accessed: ]
rf:citation
» 2181. Merge Nodes in Between Zeros | MD ARIFUL HAQUE | Sciencx | https://www.scien.cx/2024/07/04/2181-merge-nodes-in-between-zeros/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.