package problems.medium; import java.util.List; /** * Created by sherxon on 2/14/17. */ public class Triangle { public static void main(String[] args) { } public int minimumTotal(List<List<Integer>> triangle) { if (triangle.size() == 0) return 0; int min = Integer.MAX_VALUE; if (triangle.size() == 1) { for (int i = 0; i < triangle.get(0).size(); i++) { min = Math.min(triangle.get(0).get(i), min); } } for (int i = 1; i < triangle.size(); i++) { List<Integer> prev = triangle.get(i - 1); List<Integer> current = triangle.get(i); for (int j = 0; j < current.size(); j++) { if (j == 0) { current.set(j, prev.get(j) + current.get(j)); } else if (j == current.size() - 1) { current.set(j, prev.get(j - 1) + current.get(j)); } else { int minPrev = Math.min(prev.get(j), prev.get(j - 1)); current.set(j, minPrev + current.get(j)); } if (i == triangle.size() - 1) { min = Math.min(current.get(j), min); } } } return min; } }