[leetcode] Unique Paths
来源:互联网 发布:淘宝僵尸店宝贝上万个 编辑:程序博客网 时间:2024/06/14 00:38
From : https://leetcode.com/problems/unique-paths/
A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below).
The robot can only move either down or right at any point in time. The robot is trying to reach the bottom-right corner of the grid (marked 'Finish' in the diagram below).
How many possible unique paths are there?
Above is a 3 x 7 grid. How many possible unique paths are there?
Note: m and n will be at most 100.
Solution 1:
grid[m][n]的数组,grid[i][j] =grid[i-1][j] + grid[i][j-1],空间时间复杂度O(m*n)。用滚动数组空间复杂度可降为O(n).
class Solution {public: int uniquePaths(int m, int n) { vector<vector<int>> grid(m, vector<int>(n)); for(int i=0; i<m; i++) grid[i][0]=1; for(int j=0; j<n; j++) grid[0][j]=1; for(int i=1; i<m; i++) { for(int j=1; j<n; j++) { grid[i][j] = grid[i-1][j]+grid[i][j-1]; } } return grid[m-1][n-1]; }};
优化得到:
class Solution {public: int uniquePaths(int m, int n) { vector<int> line(n, 1); for(int i=1; i<m; i++) { for(int j=1; j<n; j++) { line[j] = line[j-1]+line[j]; } } return line[n-1]; }};
Solution 2:
向下走m-1, 向右走n-1。即从m+n-2步中,找出m步往下,其余步向右即可。组合数 C(m+n-2, m-1); 组合数可以用杨辉三角求。
class Solution {public: int uniquePaths(int m, int n) { vector<int> line; if(m==1 || n==1) return 1; n = m+n-2; line.push_back(1); for(int i=0; i<n; i++) { line.push_back(1); for(int j=line.size()-2; j>0; j--) { line[j] = line[j]+line[j-1]; } } return line[m-1]; }};
最后我笑了。
class Solution {public: int uniquePaths(int m, int n) { double dom = 1; double dedom = 1; int small = m<n? m-1:n-1; int big = m<n? n-1:m-1; for(int i=1;i<=small;i++) { dedom *= i; dom *= small+big+1-i; } return (int)(dom/dedom); }};
0 0
- leetcode Unique Paths && Unique Paths
- Leetcode-Unique Paths&Unique PathsII
- [LeetCode] Unique Paths and Unique Paths II
- leetcode--Unique Paths && Unique Paths ii
- leetcode--Unique Paths && Unique Paths ii
- 【Leetcode】【python】Unique Paths/Unique Paths II
- LeetCode: Unique Paths
- LeetCode: Unique Paths II
- [Leetcode] Unique Paths
- [Leetcode] Unique Paths II
- LeetCode : Unique Paths
- LeetCode : Unique Paths II
- leetcode 9: Unique Paths
- [LeetCode] Unique Paths
- [LeetCode] Unique Paths II
- [LeetCode]Unique Paths
- [LeetCode]Unique Paths II
- [LeetCode] Unique Paths
- Activity四种启动方式
- 使用C3P0抛出UnknownHostException异常
- Mac下安装Redis
- InetAddress
- Sicily 1931. 卡片游戏
- [leetcode] Unique Paths
- scala必知必会之列表的map,flatMap,zip和reduce
- 30 分钟快快乐乐学 SQL Performance Tuning
- Spring3.0与Quartz的整合实现定时任务调度
- ios 类型编码表
- Java中ArrayList 的remove&removeall
- 斗地主之洗牌(shuffle)程序的测试程序
- 可变数组
- json语法