给定一个用单链表表示的整数,然后把这个整数加一。
数据范围:链表长度满足 ,链表上每个节点的值满足 ,可以保证链表在非 0 的情况下没有前导零
例如输入{1,2,3}时,对应的输出为{1,2,4},转换过程如下图所示:
class Solution: def plusOne(self , head: ListNode) -> ListNode: # write code here a=[] while head: a.append(head) head=head.next is_add=True for i in range(len(a)): if is_add: val_new = a[-i-1].val+1 a[-i-1].val=val_new if val_new>=10: a[-i-1].val=val_new-10 else: head_new=a[0] break if i==len(a)-1: head_new=ListNode(1) head_new.next=a[0] return head_new
def plusOne(self, head: ListNode) -> ListNode: # 找到不是9的最小位 p, min_pos = head, None while p: if p.val != 9: min_pos = p p = p.next # 处理都是9的情况, 最高位前面创建一个节点0 if not min_pos: min_pos = ListNode(0) min_pos.next = head head = min_pos min_pos.val += 1 # 处理min_pos后面的值,都是9,要改成0 p = min_pos.next while p: p.val = 0 p = p.next return head