1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| class Solution { private static class SumHolder { private int sum = Integer.MAX_VALUE; }
public int minimumTotal(List<List<Integer>> triangle) { SumHolder sumHolder = new SumHolder(); dfs(triangle, 0, 0, 0, sumHolder); return sumHolder.sum; }
private void dfs(List<List<Integer>> triangle, int levelIndex, int index, int sum, SumHolder sumHolder) { if (levelIndex == triangle.size()) { sumHolder.sum = Math.min(sumHolder.sum, sum); return; }
dfs(triangle, levelIndex + 1, index, sum + triangle.get(levelIndex).get(index), sumHolder); dfs(triangle, levelIndex + 1, index + 1, sum + triangle.get(levelIndex).get(index), sumHolder); } }
|