LintCode -- 不同的路径
来源:互联网 发布:玻尔兹曼常数测量 知乎 编辑:程序博客网 时间:2024/05/17 22:45
LintCode -- unique-paths(不同的路径)
原题链接:http://www.lintcode.com/zh-cn/problem/unique-paths/
有一个机器人的位于一个M×N个网格左上角(下图中标记为'Start')。
机器人每一时刻只能向下或者向右移动一步。机器人试图达到网格的右下角(下图中标记为'Finish')。
问有多少条不同的路径?
您在真实的面试中是否遇到过这个题? Yes
样例
1,1
1,2
1,3
1,4
1,5
1,6
1,7
2,1
3,1
3,7
1,2
1,3
1,4
1,5
1,6
1,7
2,1
3,1
3,7
以上3 x 7的网格中,有多少条不同的路径?
注意
n和m均不超过100
分析:
dp[ n ][ m ] = dp[ n-1 ][ m ] + dp[ n ][ m-1 ]
时间复杂度 O(mn) 空间复杂度 O(m)
代码(C++、Python、Java):
class Solution {public: /** * @param n, m: positive integer (1 <= n ,m <= 100) * @return an integer */ int uniquePaths(int m, int n) { // wirte your code here if (n == 1 || m == 1) return 1; if (n == 2) return m; if (m == 2) return n; int dp[2][m]; for (int i = 0; i < m; i++){ dp[0][i] = i + 1; dp[1][i] = i + 1; } for (int i = 3; i <= n; i++) for (int j = 1; j < m; j++) dp[i%2][j] = dp[(i-1)%2][j] + dp[i%2][j-1]; return dp[n%2][m-1]; }};
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 (n == 1 || m == 1) return 1; if (n == 2) return m; if (m == 2) return n; int [][] dp = new int [2][m]; for (int i = 0; i < m; i++){ dp[0][i] = i + 1; dp[1][i] = i + 1; } for (int i = 3; i <= n; i++) for (int j = 1; j < m; j++) dp[i%2][j] = dp[(i-1)%2][j] + dp[i%2][j-1]; return dp[n%2][m-1]; }}
class Solution: """ @param n and m: positive integer(1 <= n , m <= 100) @return an integer """ def uniquePaths(self, m, n): # write your code here if n == 1 or m == 1: return 1 if n == 2: return m if m == 2: return n dp = [[i for i in range(1, m+1)] for j in range(2)] for i in range(3, n+1): for j in range(1, m): dp[i%2][j] = dp[(i-1)%2][j] + dp[i%2][j-1] return dp[n%2][m-1]
0 0
- LintCode -- 不同的路径
- LintCode 不同的路径
- LintCode:不同的路径
- LintCode :不同的路径
- 不同的路径 -LintCode
- LintCode 不同的路径
- LintCode UniquePaths 不同的路径
- lintcode-不同的路径-114
- LintCode 不同的路径 II
- LintCode -- 不同的路径 II
- LintCode:不同的路径II
- LintCode(easy)不同的路径
- LintCode 114 不同的路径
- 不同的路径 II -LintCode
- Lintcode 114.不同的路径
- 不同的路径 II-LintCode
- LintCode 不同的路径II
- LintCode UniquePathsII 不同的路径II
- 奇葩的JS数组
- mac COCOS2D-V3.X开发环境
- IOS CocoaPods安装和使用教程
- new wave types
- Activity返回数据的跳转
- LintCode -- 不同的路径
- Android--内存管理,OOM问题
- ThinkPHP-图片附件上传至指定目录并地址插入数据库操作
- 03-树1 树的同构
- iOS 快速创建常用控件
- Spring Security Authentication Provider
- spark-streaming系列------- 3. Kafka DirectDStream方式数据的接收
- Moodlens:一个基于表情符号的中文微博情感分析系统(A3, SIGKDD2012)
- Ruby 语言基础