@@ -0,0 +1,943 @@
+public class Solution %7B%0A    public int minimumTotal(List%3CList%3CInteger%3E%3E triangle) %7B%0A        if (triangle.size()%3C=0) return 0;%0A        if (triangle.size()==1) return triangle.get(0).get(0);%0A        int nRow = triangle.size();%0A        int %5B%5D minPath = new int%5BnRow%5D;%0A        minPath%5B0%5D=triangle.get(0).get(0);%0A        for(int iRow=1;iRow%3CnRow;iRow++)%7B%0A            List%3CInteger%3E row = triangle.get(iRow);%0A            for(int j=iRow;j%3E=0;j--)%7B%0A                int p1=Integer.MAX_VALUE,p2=Integer.MAX_VALUE;%0A                if(j%3E0)%7B%0A                    p1 = row.get(j) + minPath%5Bj-1%5D; %0A                %7D %0A                if(j%3CiRow)%7B%0A                    p2 = row.get(j) + minPath%5Bj%5D; %0A                %7D%0A                minPath%5Bj%5D = p1%3Ep2?p2:p1;%0A            %7D %0A        %7D%0A        int minSum = Integer.MAX_VALUE;%0A        for(int j=0;j%3CnRow;j++)%7B%0A            if (minPath%5Bj%5D%3CminSum) minSum = minPath%5Bj%5D;%0A        %7D%0A        %0A        return minSum;%0A    %7D%0A%7D%0A

Create Triangle.java