一、题目说明

题目62. Unique Paths,在一个m*n矩阵中,求从左上角Start到右下角Finish所有路径。其中每次只能向下、向右移动。难度是Medium!

二、我的解答

这个题目读读题目,理解后不难。定义一个dp[m][n],初始化最后一列为1,最后一行为1,然后循环计算到dp[0][0]就可以了。

代码如下:

class Solution{
	public:
		int uniquePaths(int m,int n){
			vector<vector<int>> dp(m,vector<int>(n,0));
			//最后一行初始化为1 
			for(int i=0;i<n;i++){
				dp[m-1][i] = 1;
			}
			
			//最后一列初始化为1 
			for(int i=0;i<m;i++){
				dp[i][n-1] = 1;
			}
			
			for(int t=n-2;t>=0;t--){
				for(int k=m-2;k>=0;k--){
					dp[k][t] = dp[k+1][t]+dp[k][t+1];
				}
			}
			 
			return dp[0][0];
		}
};

性能如下:

Runtime: 4 ms, faster than 56.78% of C++ online submissions for Unique Paths.
Memory Usage: 8.8 MB, less than 32.81% of C++ online submissions for Unique Paths.

三、优化措施

其他没有看到更好的解答,递归,回溯,都比较复杂。

相关文章:

  • 2021-09-30
  • 2021-08-21
  • 2021-12-23
  • 2021-07-11
  • 2021-07-25
  • 2021-06-29
  • 2021-12-17
猜你喜欢
  • 2021-08-08
  • 2021-11-28
  • 2021-07-29
相关资源
相似解决方案