leetcode之旅—两数相加go语言版

题目是将两条逆序的链表相加,输出一条新的链表例如:

输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807

这道题主要需要注意:

1、两个链表不一样长的情况

2、一个链表为空的情况

3、两个链表都结束了但是有额外的进未

4、需要从头结点的下一个节点开始插入

具体代码如下(水平有限,只是能跑出来,没有进行性能优化): 

func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
	p := l1
	q := l2
	var x int
	var y int
	var newNode = new(ListNode)
	var result = new(ListNode)
	result = newNode
	carry := 0
	for p != nil || q != nil {
		if p != nil {
			x = p.Val
		} else {
			x = 0
		}
		if q != nil {
			y = q.Val
		} else {
			y = 0
		}
		sum := x + y + carry
		carry = sum / 10
		newNode.Next = new(ListNode)
		newNode = newNode.Next
		newNode.Val = sum % 10

		if p != nil {
			p = p.Next
		}
		if q != nil {
			q = q.Next
		}
	}
	if carry > 0 && newNode != nil {
		newNode.Next = new(ListNode)
		newNode = newNode.Next
		newNode.Val = carry
	}
	return result.Next
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值