/** * 62. ä¸åè·¯å¾ * * @author abomb4 2020-04-05 */ class Solution62 { public int uniquePaths(int m, int n) { // æè·¯æ¯è®°å¾æç§èµ°æ³ä¹åæå ç§å°è¿çæ¹æ³ï¼ // ä¹å°±æ¯ï¼æ³è¦å°è¾¾ [a, b] ï¼åªè¦ [a-1, b] å [a, b-1] çæ¬¡æ°ç¸å 就好ã // è¥ a - 1 æ b - 1 è¶ åºèå´ï¼åæ 0 计ç®ã // å·²ç¥äºç¬¬ä¸ä¸ªç¹ï¼åé¢é½å¯ä»¥å ¬å¼ç®åºã if (m == 1 || n == 1) { return 1; } // arr[i, j] means from [0, 0] to [i, j] have n different paths int[][] arr = new int[m][n]; arr[0][0] = 1; for (int i = 1; i < m; i++) { for (int j = 1; j < n; j++) { arr[i][j] = getPaths(arr, i - 1, j) + getPaths(arr, i, j - 1); } } return arr[m - 1][n - 1]; } /** * This method assume arr[i, j] what i and j is in range is set */ int getPaths(int[][] arr, int i, int j) { if (i == 0 || j == 0) { return 1; } else if (i < 0 || j < 0) { return 0; } return arr[i][j]; } }