freedom.9
Senior Member
Python:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def doubleIt(self, head: Optional[ListNode]) -> Optional[ListNode]:
def reverse(head):
prev = None
current = head
while current != None:
temp = current.next
current.next = prev
prev = current
current = temp
return prev
head = reverse(head)
current = head
carry = 0
while current != None:
newVal = current.val * 2 + carry
carry = newVal//10
current.val = newVal%10
if current.next == None and carry != 0:
current.next = ListNode(carry)
current = current.next
current = current.next
return reverse(head)