row by row from bottom to the up top, calculate the minimum value to each point.

we just use one array to "remember" what is the minimum total value to each point from bottom.

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