Java leetcode问题数组与ArrayList 120.0

Java leetcode问题数组与ArrayList 120.0,java,arrays,performance,recursion,arraylist,Java,Arrays,Performance,Recursion,Arraylist,我试图解决问题120。三角形,它如下: 给定一个三角形,求从上到下的最小路径和。每一步您都可以移动到下一行的相邻数字 以下是我的解决方案: 类解决方案{ 公共整数最小总计(列表三角形){ List latestSum=new ArrayList(); 对于(int i=0;i class Solution { public int minimumTotal(List<List<Integer>> tri) { if (tri.size() == 0) {

我试图解决问题120。三角形,它如下:

给定一个三角形,求从上到下的最小路径和。每一步您都可以移动到下一行的相邻数字

以下是我的解决方案:

类解决方案{
公共整数最小总计(列表三角形){
List latestSum=new ArrayList();
对于(int i=0;i
class Solution {
    public int minimumTotal(List<List<Integer>> tri) {
     if (tri.size() == 0) {
        return 0;
    }
    if (tri.size() == 1) {
        return tri.get(0).get(0);
    }
    Integer[] dp = new Integer[tri.size()];
    return min(tri, 0, 0, dp);


    }



public int min(List<List<Integer>> tri, int row, int currIndex, Integer[] dp) {
    if (row == tri.size() - 1) {
        return tri.get(row).get(currIndex);
    }
    int minLeft;
    if (dp[row + 1] != null) {
        minLeft = dp[row + 1];
    } else {
        minLeft = min(tri, row + 1, currIndex, dp);   
    }
    int minRight = min(tri, row + 1, currIndex + 1, dp);

    dp[row + 1] = minRight;

    return tri.get(row).get(currIndex) + Math.min(minLeft, minRight);
}
}