2. Add Two Numbers
https://leetcode.com/problems/add-two-numbers/
js
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} l1
* @param {ListNode} l2
* @return {ListNode}
*/
var addTwoNumbers = function(l1, l2) {
var carry = 0
var head
var current
head = current = new ListNode(null)
while (l1 || l2) {
var sum = carry
if (l1) {
sum += l1.val
l1 = l1.next
}
if (l2) {
sum += l2.val
l2 = l2.next
}
carry = (sum / 10) >> 0
current.next = new ListNode(sum % 10)
current = current.next
}
if (carry) {
current.next = new ListNode(carry)
}
return head.next
}
py
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
head = current = ListNode(None)
carry = 0
while l1 is not None or l2 is not None:
sum = carry
if l1 is not None:
sum += l1.val
l1 = l1.next
if l2 is not None:
sum += l2.val
l2 = l2.next
carry = sum // 10
current.next = ListNode(sum % 10)
current = current.next
if carry:
current.next = ListNode(carry)
return head.next
go
package main
type ListNode struct {
Val int
Next *ListNode
}
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
carry := 0
head := &ListNode{}
current := head
for l1 != nil || l2 != nil {
sum := carry
if l1 != nil {
sum += l1.Val
l1 = l1.Next
}
if l2 != nil {
sum += l2.Val
l2 = l2.Next
}
carry = sum / 10
current.Next = &ListNode{Val: sum % 10}
current = current.Next
}
if carry > 0 {
current.Next = &ListNode{Val: carry}
}
return head.Next
}