题解 | #给单链表加一#

给单链表加一

http://www.nowcoder.com/practice/a2f1105d2ac5466e9ba8fd61310ba6d1

链表反转,末尾加 1

# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param head ListNode类 
# @return ListNode类
#
class Solution:
    def reverse(self, head: ListNode) -> ListNode:
        if not head or not head.next:
            return head
        t = None
        while head:
            n = head.next
            head.next = t
            t = head
            head = n
        return t
             
    def plusOne(self, head: ListNode) -> ListNode:
        # write code here
        first, flag = True, 0
        new_head = self.reverse(head)
        pre = ListNode(-1)
        pre2 = pre
        while new_head:
            if first:
                val = new_head.val + 1
                first = False
            else:
                val = new_head.val
            if flag:
                val += 1
                flag = 0
            if val > 9:
                val -= 10
                flag = 1
            node = ListNode(val)
            pre.next = node
            pre = pre.next
            new_head = new_head.next
        if flag:
            pre.next = ListNode(1)
            flag = 0
        return self.reverse(pre2.next)
                
    
题解 文章被收录于专栏

算法题解

全部评论

相关推荐

07-07 12:25
门头沟学院 Java
程序员牛肉:你这个智邮公司做的就是那个乐山市税务系统的服务吗?
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 11:30
仁者伍敌:kpi都懒得刷了属于是
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务