public int minimumTotal(List<List<Integer>> triangle) {
        int len = triangle.size() - 1;
        for (int i = len - 1; i >= 0; --i) {
            List<Integer> cur = triangle.get(i);
            List<Integer> prev = triangle.get(i + 1);
            for (int j = cur.size() - 1; j >= 0; --j) {
                cur.set(j, cur.get(j) + Math.min(prev.get(j + 1), prev.get(j)));
            }
        }
        return triangle.get(0).get(0);
    }