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

链表相加(二)

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 {
    stack1, stack2 := []int{}, []int{}
    for head1 != nil {
        stack1 = append(stack1, head1.Val)
        head1 =  head1.Next
    }
    for head2 != nil {
        stack2 = append(stack2, head2.Val)
        head2 = head2.Next
    }
    // 虚拟头节点 nil
    var head *ListNode
    carry := 0
    for len(stack1) > 0 || len(stack2) > 0 || carry > 0 {
        sum := carry
        if len(stack1) > 0 {
            sum += stack1[len(stack1)-1]
            stack1 = stack1[:len(stack1)-1]
        }
        if len(stack2) > 0 {
            sum += stack2[len(stack2)-1]
            stack2 = stack2[:len(stack2)-1]
        }
        carry = sum/10
        sum = sum%10
        currentNode := &ListNode{Val: sum}
        currentNode.Next = head
        head = currentNode
    }
    return head
}   

全部评论

相关推荐

牛客78682892...:直接点还好,总比要了简历也不回的强
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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