package main
import . "nc_tools"
/*
* type ListNode struct{
* Val int
* Next *ListNode
* }
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param l1 ListNode类
* @param l2 ListNode类
* @return ListNode类
*/
func addEnergyValues(l1 *ListNode, l2 *ListNode) *ListNode {
// write code here
if l1 == nil && l2 == nil {
return nil
}
dummy := &ListNode{Val: 0, Next: nil}
x, y := 0, 0
carry := 0
current := dummy
for l1 != nil || l2 != nil {
x, y = 0, 0
if l1 != nil {
x = l1.Val
}
if l2 != nil {
y = l2.Val
}
next := &ListNode{Val: (x + y + carry) % 10, Next: nil}
current.Next = next
current = current.Next
carry = (x + y + carry) / 10
if l1 != nil {
l1 = l1.Next
}
if l2 != nil {
l2 = l2.Next
}
}
if carry > 0 {
current.Next = &ListNode{Val: (x + y + carry) / 10, Next: nil}
}
return dummy.Next
}