1class Solution {2public int uniquePaths(int m, int n) {3int[][] dp = new int[m][n];45for (int i = 0; i < m; i++) {6for (int j = 0; j < n; j++) {7dp[i][j] = -1;8}9}1011return helper(m, 0, n, 0, dp);12}1314private int helper(int m, int i, int n, int j, int[][] dp) {15if (i == m || j == n) {16return 0;17}1819if (i == m - 1 && j == n - 1) {20dp[i][j] = 1;21}2223if (dp[i][j] == -1) {24dp[i][j] = helper(m, i + 1, n, j, dp) + helper(m, i, n, j + 1, dp);25}2627return dp[i][j];28}29}