We only need to find the last digit which is less than 9, suppose the index is *lastNotNine*. After plus one, every digits after *lastNotNine* will be set to 0 and digits[*lastNotNine*] will increase by 1.

The special situation need to be handled is that all input digits are 9, in such situation *lastNotNine* will be -1, then we insert a '1' to the front. Code is as following.

```
class Solution(object):
def plusOne(self, digits):
"""
:type digits: List[int]
:rtype: List[int]
"""
lastNotNine = -1
for i,d in enumerate(digits):
if d < 9:
lastNotNine = i
for i in range(lastNotNine+1,len(digits)):
digits[i] = 0
if lastNotNine != -1:
digits[lastNotNine] += 1
else:
digits.insert(0,1)
return digits
```