HTMLify

LeetCode - Double a Number Represented as a Linked List - Go
Views: 11 | Author: abh
// @leet start
/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */

func LLReverse(head *ListNode) *ListNode {
	var p1, p2, p3 *ListNode
	p3 = head
	for p3!=nil {
		p1 = p2
		p2 = p3
		p3 = p3.Next
		p2.Next = p1
	}
	return p2
}

func doubleIt(head *ListNode) *ListNode {
	num_node := LLReverse(head)
	head = num_node
	var carry int
	for num_node!=nil {
		num_node.Val = (num_node.Val * 2) + carry
		carry = num_node.Val / 10
		num_node.Val %= 10
		if num_node.Next == nil {
			break
		}
		num_node = num_node.Next
	}
	for carry > 0 {
		var num ListNode
		num.Val = carry % 10
		carry /= 10
		num_node.Next = &num
		num_node = num_node.Next
	}
	head = LLReverse(head)
	return head
}
// @leet end

Comments