您的位置:首页 > 其它

题目 :不同的路径

2015-08-19 18:36 417 查看
有一个机器人的位于一个M×N个网格左上角(下图中标记为'Start')。

机器人每一时刻只能向下或者向右移动一步。机器人试图达到网格的右下角(下图中标记为'Finish')。
问有多少条不同的路径?

您在真实的面试中是否遇到过这个题?

Yes

哪家公司问你的这个题?
Airbnb
Alibaba
Amazon Apple
Baidu Bloomberg
Cisco Dropbox
Ebay Facebook
Google Hulu
Intel Linkedin
Microsoft NetEase
Nvidia Oracle
Pinterest Snapchat
Tencent Twitter
Uber Xiaomi
Yahoo Yelp
Zenefits
感谢您的反馈

样例

1,11,21,31,41,51,61,7
2,1
3,13,7
以上3 x 7的网格中,有多少条不同的路径?

注意

n和m均不超过100

标签 Expand

动态规划

数组

方法1:AC
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

int a[][] = new int[m]
;

for(int i=0;i<m;i++){

a[i][0]=1;

}

for(int j=0;j<n;j++){

a[0][j]=1;

}

for(int i=1;i<m;i++){

for(int j=1;j<n;j++){

a[i][j] = a[i-1][j]+a[i][j-1];

}

}

return a[m-1][n-1];

}

}

方法2:时间超限了,用递归实现动态规划。没有AC
public class Solution {

/**

* @param n, m: positive integer (1 <= n ,m <= 100)

* @return an integer

*/

public static int uniquePaths(int m, int n) {

// write your code here

while(1<=m&&1<=n){

if(1==m&&1==n){

return 1;

}

return uniquePaths(m-1,n)+uniquePaths(m, n-1);

}

return 0;

}

}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: