Skip to content

Commit fc196f8

Browse files

File tree

1 file changed

+26
-1
lines changed

1 file changed

+26
-1
lines changed

solutions/triangle.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"""
66

77
# Method 1
8-
# Time: O(N)
8+
# Time: O(N), modify triangle in-place
99

1010
class Solution(object):
1111
def minimumTotal(self, triangle):
@@ -23,3 +23,28 @@ def minimumTotal(self, triangle):
2323
triangle[i][j] = min(triangle[i - 1][j - 1] + triangle[i][j], triangle[i - 1][j] + triangle[i][j])
2424
print(triangle[i])
2525
return min(triangle[-1])
26+
27+
28+
29+
# Method 2
30+
# Space: O(N) without modifying original triangle
31+
class Solution(object):
32+
def minimumTotal(self, triangle):
33+
"""
34+
:type triangle: List[List[int]]
35+
:rtype: int
36+
"""
37+
prevRow = triangle[0]
38+
for i in range(1, len(triangle)):
39+
currRow = []
40+
for j in range(len(triangle[i])):
41+
smallAbove = float('-inf')
42+
if j == 0:
43+
smallAbove = prevRow[j]
44+
elif j == len(triangle[i]) - 1:
45+
smallAbove = prevRow[j - 1]
46+
else:
47+
smallAbove = min(prevRow[j-1], prevRow[j])
48+
currRow.append(smallAbove + triangle[i][j])
49+
prevRow = currRow
50+
return min(prevRow)

0 commit comments

Comments
 (0)