Triangle
Thoughts
Code
class Solution {
public int minimumTotal(List<List<Integer>> triangle) {
if (triangle.size() == 0) {
return 0;
}
int[] f = new int[triangle.size() * (triangle.size() + 1) / 2];
f[0] = triangle.get(0).get(0);
if (triangle.size() == 1) {
return f[0];
}
int index = 1;
int min = Integer.MAX_VALUE;
for (int i = 1; i < triangle.size(); i++) {
min = Integer.MAX_VALUE;
for (int j = 0; j < triangle.get(i).size(); j++) {
f[index] = triangle.get(i).get(j);
if (j == 0) {
f[index] += f[index - i];
} else if (j == i) {
f[index] += f[index - i - 1];
} else {
f[index] += Math.min(f[index - i], f[index - i - 1]);
}
min = Math.min(f[index], min);
index++;
}
}
return min;
}
}Analysis
Ver.2
Last updated