【leetcode千题】369. 给单链表加一

用一个 非空 单链表来表示一个非负整数,然后将这个整数加一。

你可以假设这个整数除了 0 本身,没有任何前导的 0。

这个整数的各个数位按照 高位在链表头部、低位在链表尾部 的顺序排列。

示例:

输入: [1,2,3]
输出: [1,2,4]

思路1:

直接转为十进制整数,加一
然后新建链表

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def plusOne(self, head: ListNode) -> ListNode:
        summ = 0
        while head:
            summ = summ*10+head.val
            head = head.next
        summ+=1
        summ = str(summ)
        h = ListNode(int(summ[0]))
        ans = h
        l = len(summ)
        for i in range(1,l):
            h.next = ListNode(int(summ[i]))
            h = h.next
        return ans

思路2:

哨兵头节点
加法运算

找出最靠右的不是 9 的数字,将该数字加 1。然后将该数字之后所有的 9 改成 0。

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def plusOne(self, head: ListNode) -> ListNode:
        h = head
        ee = ListNode()
        while h:
            if h.next==None:
                ee = h
            h = h.next
        if ee.val !=9:
            ee.val +=1
        else:
            h = head
            ee = ListNode(-1)
            while h:
                if h.val!=9:
                    ee = h
                h = h.next
            if ee.val == -1:
                ee.val=1
                ee.next=head
                while head:
                    head.val=0
                    head = head.next
                return ee
            ee.val+=1
            ee = ee.next
            while ee:
                ee.val=0
                ee = ee.next
        return head
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值