Triangle
public class Solution {
/**
* @param triangle: a list of lists of integers
* @return: An integer, minimum path sum
*/
public int minimumTotal(int[][] triangle) {
// write your code here
if (triangle == null || triangle.length == 0) {
return 0;
}
if (triangle[0] == null || triangle[0].length == 0) {
return 0;
}
int n = triangle.length;
int[][] dp = new int[n][n];
dp[0][0] = triangle[0][0];
for (int i = 1; i < n; i++) {
dp[i][0] = dp[i-1][0] + triangle[i][0];
dp[i][i] = dp[i-1][i-1] + triangle[i][i];
}
for (int i = 1; i < n; i++) {
for (int j = 1; j < i; j++) {
dp[i][j] = Math.min(dp[i-1][j], dp[i-1][j-1]) + triangle[i][j];
}
}
int ans = dp[n-1][0];
for (int i = 1; i < n; i++) {
ans = Math.min(ans, dp[n-1][i]);
}
return ans;
}
}
最后更新于
这有帮助吗?