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

链表相加(二)

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 {
      rl1, rl2 := reverse(head1), reverse(head2)
    newHead := &ListNode{}
    cur := newHead
    plus := 0

    for rl1 != nil || rl2 != nil {
        node := &ListNode{Val: plus}
        if rl1 != nil {
            node.Val += rl1.Val
            rl1 = rl1.Next
        }
        if rl2 != nil {
            node.Val += rl2.Val
            rl2 = rl2.Next
        }
        plus = node.Val/10
        node.Val %= 10
        cur.Next = node
        cur = cur.Next
    }

    if plus > 0 {
        cur.Next = &ListNode{Val: plus}
    }

    return reverse(newHead.Next)
}

func reverse(head *ListNode) *ListNode {
    var pre *ListNode
    cur := head
    for cur != nil {
        nxt := cur.Next
        cur.Next = pre
        pre = cur
        cur = nxt
    }
    return pre
}


全部评论
leetcode变种题,需要先反转,哈哈
点赞 回复 分享
发布于 2024-04-26 17:28 天津

相关推荐

练习JAVA时长两年半:qps 30000
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务