-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path61_PlusOne.py
88 lines (68 loc) · 2.63 KB
/
61_PlusOne.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#-------------------------------------------------------------------------------
#
#-------------------------------------------------------------------------------
# By Will Shin
#
#-------------------------------------------------------------------------------
# LeetCode prompt
#-------------------------------------------------------------------------------
"""
Given a non-empty array of digits representing a non-negative integer, plus one to the integer.
The digits are stored such that the most significant digit is at the head of the list, and each element in the array contain a single digit.
You may assume the integer does not contain any leading zero, except the number 0 itself.
Example 1:
Input: [1,2,3]
Output: [1,2,4]
Explanation: The array represents the integer 123.
Example 2:
Input: [4,3,2,1]
Output: [4,3,2,2]
Explanation: The array represents the integer 4321.
"""
# #
#-------------------------------------------------------------------------------
# Approach
#-------------------------------------------------------------------------------
"""
* there are a few special cases:
- carrying the 1
- carrying the one to the beginning of the array
"""
#-------------------------------------------------------------------------------
# Solution
#-------------------------------------------------------------------------------
def myplusOne(digits):
# first we add 1 to the end
digits[-1] = digits[-1] + 1
# then we loop backwards and since reversed returns a tuple, we are just dumping it
for index, _ in reversed(list(enumerate(digits))):
if digits[index] > 9:
# then we have to carry
digits[index] = 0
if index != 0:
digits[index-1] += 1
else:
digits = [1]+digits
else:
continue
return digits
#-------------------------------------------------------------------------------
# Main Leetcode Input Driver
#-------------------------------------------------------------------------------
class Solution:
def plusOne(self, digits):
return myplusOne(digits)
#-------------------------------------------------------------------------------
# Unit Test
#-------------------------------------------------------------------------------
import unittest
class TestSolution(unittest.TestCase):
def test_1(self):
input = [1, 2, 3]
ans = [1, 2 , 4]
self.assertEqual(Solution().plusOne(input), ans)
def test_99(self):
input = [9, 9]
ans = [1, 0, 0]
self.assertEqual(Solution().plusOne(input), ans)
unittest.main()