public static int minimumTotal(ArrayList<ArrayList<Integer>> triangle) { if (triangle == null) return 0; int[] sum = new int[triangle.size() + 1]; for (int i = triangle.size() - 1; i >= 0; i--) { for (int j = 0; j < triangle.get(i).size(); j++) { List currentList = triangle.get(i); sum[j] = (Integer) (currentList.get(j)) + Math.min(sum[j], sum[j + 1]); } for (int x = 0; x < sum.length; x++) System.out.print(sum[x] + " "); System.out.println(); } return sum[0]; }