This is somewhat like DP, while the formula is clear: get the min from two adjacent elements.
Solution:
# T:O(m*n) S:O(1) class Solution: # @param triangle, a list of lists of integers # @return an integer def minimumTotal(self, triangle): length = len(triangle) if length == 1: return triangle[0][0] for i in xrange(1, length): for j in xrange(len(triangle[i])): if j == 0: triangle[i][j] = triangle[i - 1][j] + triangle[i][j] elif j == len(triangle[i])-1: triangle[i][j] = triangle[i - 1][len(triangle[i-1])-1] + triangle[i][j] else: triangle[i][j] = min(triangle[i-1][j], triangle[i-1][j-1]) + triangle[i][j] return min(triangle[length - 1])Run Time: 96 ms
No comments:
Post a Comment