DEV Community

Cover image for 2816. Double a Number Represented as a Linked List
MD ARIFUL HAQUE
MD ARIFUL HAQUE

Posted on • Edited on

2816. Double a Number Represented as a Linked List

2816. Double a Number Represented as a Linked List

Medium

You are given the head of a non-empty linked list representing a non-negative integer without leading zeroes.

Return the head of the linked list after doubling it.

Example 1:

example

  • Input: head = [1,8,9]
  • Output: [3,7,8]
  • Explanation: The figure above corresponds to the given linked list which represents the number 189. Hence, the returned linked list represents the number 189 * 2 = 378.

Example 2:

example2

  • Input: head = [9,9,9]
  • Output: [1,9,9,8]
  • Explanation: The figure above corresponds to the given linked list which represents the number 999. Hence, the returned linked list reprersents the number 999 * 2 = 1998.

Constraints:

  • The number of nodes in the list is in the range [1, 104]
  • 0 <= Node.val <= 9
  • The input is generated such that the list represents a number that does not have leading zeros, except the number 0 itself.

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 doubleIt($head) { if ($head->val >= 5) $head = new ListNode(0, $head); for ($curr = $head; $curr != null; $curr = $curr->next) { $curr->val *= 2; $curr->val %= 10; if ($curr->next && $curr->next->val >= 5) ++$curr->val; } return $head; } } 
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!

Top comments (0)