369. Plus One Linked List
https://leetcode.com/problems/plus-one-linked-list/description/
Given a non-negative integer represented as non-empty a singly linked list of digits, plus one to the integer.
You may assume the integer do not contain any leading zero, except the number 0 itself.
The digits are stored such that the most significant digit is at the head of the list.
Example :
Input: [1,2,3]
Output: [1,2,4]Thoughts
由linked list表示一个正整数,每个node表示一个数字,最大的位在head,实现对它+1的效果。从右数第一个不为9的+1,它右边的全部置为0。找右边第一个不为9的用先后两个指针。
Code
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def plusOne(self, head: ListNode) -> ListNode:
i, j = None, head
while j:
if j.val != 9:
i = j
j = j.next
if not i:
new_h = ListNode(1)
new_h.next = head
i = head
head = new_h
else:
i.val += 1
i = i.next
while i:
i.val = 0
i = i.next
return head
Analysis
时间复杂度O(N).
Last updated
Was this helpful?