【发布时间】:2016-05-05 07:49:54
【问题描述】:
LeetCode 中 120. 三角(动态规划)
问题:
给定一个三角形,求从上到下的最小路径和。每一步你都可以移动到下一行的相邻数字。
例如,给定以下三角形 [ [2], [3,4], [6,5,7], [4,1,8,3] ] //从上到下的最小路径和为11(即2 + 3 + 5 + 1 = 11)。
//注意:
我总是得到
致命错误:不能用 end 形成 Range
关于“for i in (row-1)...0”。
非常感谢!感谢您的时间!
class Solution
{
func minimumTotal(triangle: [[Int]]) -> Int
{
if triangle.count == 0
{
return 0
}
if triangle.count == 1
{
return triangle[0][0]
}
var arr = [Int](count: triangle.last!.count, repeatedValue: 0)
let row = triangle.count
for i in (row-1)...0
{
let col = triangle[i].count
for j in 0...col-1
{
if i == row-1
{
arr[i] = triangle[i][j]
continue
}
arr[j] = min(arr[j], arr[j+1]) + triangle[i][j]
}
}
return arr[0]
}
}
var test1 = Solution()
//var input = [[10]]
//var input = [[1],[2,3]]
var input = [[-1],[2,3],[1,-1,-3]]
var result = test1.minimumTotal(input)
print(result)
【问题讨论】: