leetcode 两数相加 Go!


type ListNode struct {
	Val  int
	Next *ListNode
}
//我是将加到的sum组成ListNode结构体,然后放入切片,将切片的首位next一直指向左后一个元素即可
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
	var slice []*ListNode
	n1 := l1
	n2 := l2
	up := 0 // 进位,如果两个位上的数相加超过10,则为1,否则为0
	for n1 != nil || n2 != nil {
		c := n1.Val + n2.Val
		sum := c + up
		if sum >= 10 {up = 1} else {up = 0}
		sum = sum % 10
		slice = append(slice, &ListNode{Val: sum})
		n1,n2 = n1.Next,n2.Next
		if n1 == nil && n2 == nil {
			break
		}
		if n1 == nil {
			n1 = new(ListNode)
			n1.Val = 0
		}
		if n2 == nil {
			n2 = new(ListNode)
			n2.Val = 0
		}
	}
	if up == 1 {
		slice = append(slice, &ListNode{Val: up})
	}
	for i := 0; i < len(slice); i++ {
		if i == len(slice)-1 {
			break
		}
		slice[i].Next = slice[i+1]
	}
	return slice[0]
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值