Leetcode P2221 Java使用动态规划解决此问题
ideas
首先我们创建一个dp数据,dp数组第一行数据就是nums
int[][] dp = new int[nums.length][nums.length];
dp[0] = nums;
因为每计算出新的数据都会少一个元素,索引内循环的结束条件是num.length-1
dp公式为当前下标等于 dp[i-1][j] + dp[j-1][j+1]
for (int i = 1; i < nums.length; i++) {
for (int j = 0; j < nums.length-i ; j++) {
dp[i][j] = (dp[i-1][j] + dp[j-1][j+1]) %10;
}
}
经过dp推到后,二维数组最后一个行第0个就是我们答案的数据
return dp[nums.length-1][0];
code
package leccod;
public class P2221 {
public static void main(String[] args) {
}
public int triangularSum(int[] nums) {
int[][] dp = new int[nums.length][nums.length];
dp[0] = nums;
for (int i = 1; i < nums.length; i++) {
for (int j = 0; j < nums.length-i ; j++) {
dp[i][j] = (dp[i-1][j] + dp[j-1][j+1]) %10;
}
}
return dp[nums.length-1][0];
}
}
|