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 digitsWith 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 digitsNotes
Cards
START Basic Front: Plus One Back: Keep one space for leftmost digit if carryover overflows.
END