public class Solution {
public int minimumTotal(ArrayList<ArrayList<Integer>> triangle) {
int n1=triangle.size();
int n2=triangle.get(n1-1).size();
int[] sum=new int[n1+1];
// Bottom Up
for(int i=n1;i>0;i--)
{
int[] newsum=new int[n1+1];
for(int j=0;j<i;j++)
{
int ans1=sum[j];
int ans2=sum[j+1];
int ans=(ans1<ans2)?ans1:ans2;
newsum[j]=triangle.get(i-1).get(j)+ans;
}
sum=newsum;
}
return sum[0];
// Top down
/*
for(int i=0;i<n1;i++)
{
int[] newsum=new int[n2];
for(int j=0;j<=i;j++)
{
int x=triangle.get(i).get(j);
int ans1=sum[j]+x;
int ans2=Integer.MAX_VALUE;
if(j>0)ans2=sum[j-1]+x;
if(j==0)newsum[j]=ans1;
else if(j==i)newsum[j]=ans2;
else newsum[j]=(ans1<ans2)?ans1:ans2;
}
sum=newsum;
}
int m=Integer.MAX_VALUE;
for(int i=0;i<n2;i++)
if(sum[i]<m)m=sum[i];
return m;
*/
}
}
No comments:
Post a Comment