//第一题 int res; public int maximumTotal(int[][] triangle){ if(triangle.length == 0){ return 0; } traverse(triangle,0,0); return res + triangle[0][0]; } public int traverse(int[][] triangle, int i, int j){ if(i >triangle.length - 1 || j > triangle[i].length || i < 0 || j < 0){ return 0; } int left = traverse(triangle,i + 1,j); int right = traverse(triangle,i + 1,j + 1); int maxVal = Math.max(left,right); res = Math.max(res,Math.max(left,right)); return maxVal + triangle[i][j]; }