Plus One Linked List

首先可以反过来链表再加1,这是最直观的做法了,但是代码长,主要链表的题个人都不是很喜欢用递归方式做

class Solution(object):
    def plusOne(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        def reverse(head):
            pre, nxt = None, None
            while head:
                nxt = head.next
                head.next = pre
                pre = head
                head = nxt
            return pre

        root = reverse(head)
        cur = root
        step = 1
        while cur:
            step, cur.val = divmod(cur.val + step, 10)
            if not step:
                break
            cur = cur.next

        result = reverse(root)
        if step:
            tmp = ListNode(1)
            tmp.next = result
            return tmp
        return result

results matching ""

    No results matching ""