Skip to content

Commit a529c6c

Browse files
committed
Add problem 66 - Plus One
1 parent 6c841d6 commit a529c6c

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed

problems/math/plus_one.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
from typing import List
2+
3+
4+
class PlusOne:
5+
@staticmethod
6+
def plusOne(digits: List[int]) -> List[int]:
7+
n = len(digits)
8+
for i in range(n - 1, -1, -1):
9+
if digits[i] < 9:
10+
digits[i] += 1
11+
return digits
12+
digits[i] = 0
13+
14+
output = [0] * (n + 1)
15+
output[0] = 1
16+
return output

tests/math/plus_one_test.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import unittest
2+
3+
from problems.math.plus_one import PlusOne
4+
5+
6+
class TestPlusOne(unittest.TestCase):
7+
8+
def setUp(self):
9+
self.plus_one = PlusOne()
10+
11+
def test_plus_one_no_carry_over(self):
12+
self.assertEqual(self.plus_one.plusOne([1, 2, 3]), [1, 2, 4])
13+
14+
def test_plus_one_with_carry_over_in_middle(self):
15+
self.assertEqual(self.plus_one.plusOne([1, 2, 9]), [1, 3, 0])
16+
17+
def test_plus_one_with_all_nines(self):
18+
self.assertEqual(self.plus_one.plusOne([9, 9, 9]), [1, 0, 0, 0])
19+
20+
def test_plus_one_empty_array(self):
21+
self.assertEqual(self.plus_one.plusOne([]), [1])
22+
23+
24+
if __name__ == '__main__':
25+
unittest.main()

0 commit comments

Comments
 (0)