题解 | #链表相加(二)#
链表相加(二)
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 {
sta1 := make([]*ListNode, 0)
sta2 := make([]*ListNode, 0)
top1, top2 := 0, 0
p, q := head1, head2
for p != nil {
sta1 = append(sta1, p)
p = p.Next
top1++
}
for q != nil {
sta2 = append(sta2, q)
q = q.Next
top2++
}
c := 0
var r *ListNode
for i, j := top1-1, top2-1; i >= 0 || j >= 0; {
val := c
if i >= 0 {
val += sta1[i].Val
i--
}
if j >= 0 {
val += sta2[j].Val
j--
}
c = 0
if val >= 10 {
val -= 10
c = 1
}
if r == nil {
r = &ListNode{val, nil}
} else {
r = &ListNode{val, r}
}
}
if c > 0 {
if r == nil {
r = &ListNode{c, nil}
} else {
r = &ListNode{c, r}
}
}
return r
}

查看4道真题和解析