1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| package com.demo.s120;
import java.util.List;
public class Solution { public int minimumTotal(List<List<Integer>> triangle) { int n = triangle.size(); int[][] f = new int[2][n]; f[0][0] = triangle.get(0).get(0); for (int i = 1; i < n; ++i) { int curr = i % 2; int prev = 1 - curr; f[curr][0] = f[prev][0] + triangle.get(i).get(0); for (int j = 1; j < i; ++j) { f[curr][j] = Math.min(f[prev][j - 1], f[prev][j]) + triangle.get(i).get(j); } f[curr][i] = f[prev][i - 1] + triangle.get(i).get(i); } int minTotal = f[(n - 1) % 2][0]; for (int i = 1; i < n; ++i) { minTotal = Math.min(minTotal, f[(n - 1) % 2][i]); } return minTotal; }
}
|