三角形最小路径和
思路
dp就完事了
代码
class Solution {
public int minimumTotal(List<List<Integer>> triangle) {
int i, j, n, ans;
ans = 0x7fffffff;
n = triangle.size();
int[][] dp = new int[2][n];
int[] tmp;
dp[0][0] = triangle.get(0).get(0);
for (i = 1; i < n; ++i) {
for (j = 0; j < i + 1; ++j) {
if (j == 0) {
dp[1][j] = dp[0][j] + triangle.get(i).get(j);
} else if (j == i) {
dp[1][j] = dp[0][j - 1] + triangle.get(i).get(j);
} else {
dp[1][j] = Math.min(dp[0][j], dp[0][j - 1]) + triangle.get(i).get(j);
}
}
tmp = dp[0];
dp[0] = dp[1];
dp[1] = tmp;
}
for (i = 0; i < n; ++i) {
ans = ans < dp[0][i] ? ans : dp[0][i];
}
return ans;
}
}
总结
休息日还要搞研究呢