Airtel Payments Bank represents certain large Airtel wallet amounts as singly linked lists so the number of digits is not limited by native integer size. Each node stores one decimal digit, with the least significant digit at the head.
Given the heads of two non-empty linked lists, add the represented non-negative integers and return the sum in the same reverse-digit format. Do not convert either list into a Python integer or string.
Implement add_numbers(l1, l2). Each input is a ListNode with integer field val in the range 0 to 9 and pointer field next. Return the head of a new linked list representing the sum. Input lists may have different lengths. Leading zero digits are allowed, but the result should not contain unnecessary leading zero nodes unless the sum is zero.
For examples below, lists are shown as arrays from head to tail.
def add_numbers(l1, l2):