题解 | #链表相加(二)#
链表相加(二)
https://www.nowcoder.com/practice/c56f6c70fb3f4849bc56e33ff2a50b6b
package main
import (
. "nc_tools"
)
/*
* type ListNode struct{
* Val int
* Next *ListNode
* }
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head1 ListNode类
* @param head2 ListNode类
* @return ListNode类
*/
func addInList( head1 *ListNode , head2 *ListNode ) *ListNode {
stack1, stack2 := []int{}, []int{}
for head1 != nil {
stack1 = append(stack1, head1.Val)
head1 = head1.Next
}
for head2 != nil {
stack2 = append(stack2, head2.Val)
head2 = head2.Next
}
// 虚拟头节点 nil
var head *ListNode
carry := 0
for len(stack1) > 0 || len(stack2) > 0 || carry > 0 {
sum := carry
if len(stack1) > 0 {
sum += stack1[len(stack1)-1]
stack1 = stack1[:len(stack1)-1]
}
if len(stack2) > 0 {
sum += stack2[len(stack2)-1]
stack2 = stack2[:len(stack2)-1]
}
carry = sum/10
sum = sum%10
currentNode := &ListNode{Val: sum}
currentNode.Next = head
head = currentNode
}
return head
}