题目:原题链接(中等)
标签:链表
解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
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