5.2
果然刷题的时候,一般情况下用递归是过不了时间复杂度的啊。呵呵呵呵
又学了一招,用一个数组把数都 存起来,这样时间复杂度大概就都是n方,还是可以接受的了。
public class Solution {
/**
* @param n, m: positive integer (1 <= n ,m <= 100)
* @return an integer
*/
public int uniquePaths(int m, int n) {
// write your code here
if(m == 1 || n == 1){
return 1;
}
/* 这个思路大概是对的,就是会超时。
应该采用非递归的方式就好了呢
但是我不会啊,哈哈哈哈
*/
//后来我弄了一个数组,用来存数
arrInit(arrTmp);
return arrTmp[m-1][n-1];
}
public static int[][] arrTmp = new int[100][100];
public static void arrInit(int[][] arrTmp){
for(int i = 0;i<100;i++){
arrTmp[0][i] = 1;
arrTmp[i][0] = 1;
}
for(int x = 1; x < 100; x++){
for(int y = 1; y <= x;y++){
arrTmp[x][y] = arrTmp[x-1][y] + arrTmp[x][y-1];
arrTmp[y][x] = arrTmp[x][y];
}
}
}
}