0
点赞
收藏
分享

微信扫一扫

LeetCode题解(0369):给单链表加一(Python)


题目:​​原题链接​​(中等)

标签:链表

解法

时间复杂度

空间复杂度

执行用时

Ans 1 (Python)

O ( N )

O ( N )

28ms (100.00%)

Ans 2 (Python)

O ( N )

O ( 1 )

40ms (76.27%)

Ans 3 (Python)

解法一(列表):

class Solution:
def plusOne(self, head: ListNode) -> ListNode:
lst = []

ans = node = ListNode(0)
node.next = head
while node:
lst.append(node)
node = node.next

while lst:
if lst[-1].val < 9:
lst[-1].val += 1
break
else:
lst[-1].val = 0
lst.pop()

if ans.val == 0:
return ans.next
else:
return ans

解法二(两次遍历):

class Solution:
def plusOne(self, head: ListNode) -> ListNode:
# 第一次遍历
# O(N)
ans = mark = node = ListNode(0)
node.next = head
while node:
if node.val < 9:
mark = node
node = node.next

# 第二次遍历
# O(N)
node = ans
find = False
while node:
if node == mark:
node.val += 1
find = True
elif find:
node.val = 0
node = node.next

# 返回结果
if ans.val == 0:
return ans.next
else:
return ans



举报

相关推荐

0 条评论