TARGET DECK: Leetcode FILE TAGS: Easy


Intuition

  • Add one to the final element
  • Then, carry over elementary style
  • Add an extra position to the very left of the array if carryover continues to the end.
    • You can do this via a deque or by simply inserting.

Complexity

Runtime

Space

Code

Simplified

class Solution:
    def plusOne(self, digits: List[int]) -> List[int]:
        digits[-1] += 1
        leftover = 0
        for i in reversed(range(len(digits))):
            digits[i] += leftover
            leftover, digits[i] = divmod(digits[i], 10)
 
        if leftover:
            digits.insert(0, leftover)
        return digits

With Deque

class Solution:
    def plusOne(self, digits: List[int]) -> List[int]:
        digits = deque(digits)
        digits.appendleft(0)
 
        digits[-1] += 1
        leftover = 0
        for i in range(len(digits) - 1, -1, -1):
            if leftover != 0:
                digits[i] += leftover
                leftover = 0
            if digits[i] >= 10:
                leftover = digits[i] // 10
                digits[i] %= 10
 
        if digits[0] == 0:
            digits.popleft()
        return digits

Notes

Cards

START Basic Front: Plus One Back: Keep one space for leftmost digit if carryover overflows.

END


References