From bb553b9290cd505139ebf32523f17b03e2d52de6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=94=90=E6=A0=91=E6=A3=AE?= <tangshusen@pku.edu.cn>
Date: Sun, 3 Feb 2019 21:58:25 +0800
Subject: [PATCH] Create 62. Unique Paths.md

---
 solutions/62. Unique Paths.md | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)
 create mode 100644 solutions/62. Unique Paths.md

diff --git a/solutions/62. Unique Paths.md b/solutions/62. Unique Paths.md
new file mode 100644
index 0000000..0f5b568
--- /dev/null
+++ b/solutions/62. Unique Paths.md	
@@ -0,0 +1,22 @@
+# [62. Unique Paths](https://leetcode.com/problems/unique-paths/)
+# 思路
+题目要求从网格矩形的左上角移动到右下角共有多少可能的路径,一次移动只能向右或向下。      
+就是一个简单的递归,设置一个大小为(m + 1)x(n + 1)的数组dp(初始值全为0), dp[i][j]代表从左上角到达位置第i行第j列的路径数,
+则根据题意可知`dp[1][1] = 1`、`dp[i][j] += (dp[i - 1][j] + dp[i][j - 1])`。最终的返回结果就是dp[m][n]。       
+时间复杂度O(mn),空间复杂度O(mn)
+
+# C++
+``` C++
+class Solution {
+public:
+    int uniquePaths(int m, int n) {
+        vector<vector<int>>dp(m + 1, vector<int>(n + 1, 0));
+        dp[1][1] = 1;
+        for(int i = 1; i <= m; i++)
+        for(int j = 1; j <= n; j++)
+            dp[i][j] += (dp[i-1][j] + dp[i][j-1]);
+        
+        return dp[m][n];
+    }
+};
+```