
二维
import java.util.*;public class Solution {public int uniquePaths (int m, int n) {// write code hereint[][] dp = new int[m][n];for(int i = 0; i < m; i++){for(int j = 0; j < n; j++){if(i == 0 || j == 0){dp[i][j] = 1;continue;}dp[i][j] = dp[i-1][j]+dp[i][j-1];}}return dp[m-1][n-1];}}
优化为一维
因为每一位只需要用到当前位置上面和左边的值,所以使用一维数组,一层一层的计算,此时第index个位置的值为上一层的值,所以要算当前位置的路径数,只需要累加上左边的值即可。
import java.util.*;public class Solution {public int uniquePaths (int m, int n) {int[] dp = new int[n];for(int i = 0; i < n; i++)dp[i] = 1;for(int i = 1; i < m; i++){for(int j = 1; j < n; j++){dp[j] = dp[j]+dp[j-1];}}return dp[n-1];}}
