public int minimumTotal(ArrayList<ArrayList<Integer>> triangle) {
        if(triangle == null )
            return 0;
        List<Integer> list = triangle.get(triangle.size()-1);
        int[] min = new int[list.size()];
        for(int i = 0 ; i < list.size(); i++)
            min[i] = list.get(i);
        for(int i = triangle.size()-2; i >= 0; i--){
            list = triangle.get(i);
            for(int j = 0 ; j <= i; j++){
                min[j] = list.get(i) + Math.min(min[j],min[j+1]);
            }
        }
        return min[0];
    }