java+链表反向,LeetCode Golang 单向链表相加 反向实现

LeetCode 两数之和, 反向实现

1 -> 2 -> 3 -> 4

+                  3 -> 4

----------------------------

1 -> 2 -> 6 -> 8

func addTwoNumbersReverse(l1 *ListNode, l2 *ListNode) *ListNode {

if l1 == nil || l2 == nil {

return nil

}

l := new(ListNode)

l.Val = 0

tmp := l

flag := 0

l1Arr := []int{}

l2Arr := []int{}

lRst := []int{}

for l1 != nil {

l1Arr = append(l1Arr, l1.Val)

l1 = l1.Next

}

for l2 != nil {

l2Arr = append(l2Arr, l2.Val)

l2 = l2.Next

}

i := 0

for {

if i > len(l1Arr)-1 || i > len(l2Arr)-1 {

break

}

num := l1Arr[i]+l2Arr[i]+flag

flag = 0

if num >= 10 {

flag = 1

num = num % 10

}

lRst = append(lRst,num)

i++

}

if i < len(l1Arr) {

for ;i

if flag == 1 {

lRst = append(lRst,l1Arr[i]+1)

flag = 0

} else {

lRst = append(lRst,l1Arr[i])

}

}

}

if i < len(l2Arr) {

for ;i

if flag == 1 {

lRst = append(lRst,l2Arr[i]+1)

flag = 0

} else {

lRst = append(lRst,l2Arr[i])

}

}

}

for i := len(lRst)-1; i >=0; i-- {

tmp.Val = lRst[i]

if i == 0 {

break

}

tmp.Next = new(ListNode)

tmp = tmp.Next

}

return l

}

思路: 为了简化运算把所有链表中的值取出来到切片里进行相加, 然后再从切片写入到新的链表里

另一个思路: 借助昨天的代码, 再运算前对链表进行反转

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值