题解 | #链表相加(二)#

链表相加(二)

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
}

全部评论

相关推荐

白火同学:能。我当初应届沟通了1200,收简历50,面试10左右吧,加油投吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务