要求
用一个 非空 单链表来表示一个非负整数,然后将这个整数加一。
你可以假设这个整数除了 0 本身,没有任何前导的 0。
这个整数的各个数位按照 高位在链表头部、低位在链表尾部 的顺序排列。
示例:
输入: [1,2,3]
输出: [1,2,4]
核心代码
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution:
def reverseList(self,head):
if head is None or head.next is None:
return head
tmp = self.reverseList(head.next)
head.next.next = head
head.next = None
return tmp
def plusOne(self, head: ListNode) -> ListNode:
head = self.reverseList(head)
tmp = head
head.val += 1
while head.val > 9:
head.val -= 10
if head.next:
head.next.val += 1
head = head.next
else:
head.next = ListNode(1)
break
return self.reverseList(tmp)
解题思路:我们实现链表中的数字+1的功能,我们首先先将链表反转,因为这样在进位计算的时候,直接next比较方便,当最后一位还要向前进位的时候,我们在结尾拼接一个新的节点即可.