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

链表相加(二)

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 reverseList(h *ListNode) *ListNode {
	var res *ListNode
	for h != nil {
		tmpNext := h.Next
		h.Next = res
		res = h
		h = tmpNext
	}
	return res
}

func addInList(head1 *ListNode, head2 *ListNode) *ListNode {
	// write code here
	rh1 := reverseList(head1)
	rh2 := reverseList(head2)
	var res *ListNode
	curV := 0
	curOffset := 0
	for rh1 != nil || rh2 != nil {
		v1 := 0
		v2 := 0
		if rh1 != nil {
			v1 = rh1.Val
			rh1 = rh1.Next
		}
		if rh2 != nil {
			v2 = rh2.Val
			rh2 = rh2.Next
		}
		tmpV := v1 + v2 + curOffset
		curV = tmpV % 10
		curOffset = tmpV / 10
		tmpNode := ListNode{
			Val:  curV,
			Next: res,
		}
		res = &tmpNode
	}
	if curOffset > 0 {
		tmpNode := ListNode{
			Val:  curOffset,
			Next: res,
		}
		res = &tmpNode
	}
	return res
}

全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务