File tree Expand file tree Collapse file tree 2 files changed +138
-0
lines changed Expand file tree Collapse file tree 2 files changed +138
-0
lines changed Original file line number Diff line number Diff line change
1
+ package leetcode
2
+
3
+ /*
4
+ 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。
5
+
6
+ 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。
7
+
8
+ 问总共有多少条不同的路径?
9
+
10
+
11
+ 例如,上图是一个7 x 3 的网格。有多少可能的路径?
12
+
13
+
14
+ 示例 1:
15
+
16
+ 输入: m = 3, n = 2
17
+ 输出: 3
18
+ 解释:
19
+ 从左上角开始,总共有 3 条路径可以到达右下角。
20
+ 1. 向右 -> 向右 -> 向下
21
+ 2. 向右 -> 向下 -> 向右
22
+ 3. 向下 -> 向右 -> 向右
23
+ 示例 2:
24
+
25
+ 输入: m = 7, n = 3
26
+ 输出: 28
27
+
28
+
29
+ 提示:
30
+
31
+ 1 <= m, n <= 100
32
+ 题目数据保证答案小于等于 2 * 10 ^ 9
33
+ 通过次数85,793提交次数143,826
34
+
35
+ 来源:力扣(LeetCode)
36
+ 链接:https://leetcode-cn.com/problems/unique-paths
37
+ 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
38
+ */
39
+
40
+ func UniquePaths (m int , n int ) int {
41
+ if m == 1 || n == 1 {
42
+ return 1
43
+ }
44
+ if m > n {
45
+ return UniquePaths (n , m )
46
+ }
47
+
48
+ var a [][]int
49
+ for i := 0 ; i < m ; i ++ {
50
+ var list []int
51
+ for j := 0 ; j <= n ; j ++ {
52
+ list = append (list , 0 )
53
+ }
54
+ a = append (a , list )
55
+ }
56
+
57
+ for i := 0 ; i < m ; i ++ {
58
+ a [i ][0 ] = 1
59
+ }
60
+
61
+ for i := 0 ; i < n ; i ++ {
62
+ a [0 ][i ] = 1
63
+ }
64
+
65
+ for i := 1 ; i < m ; i ++ {
66
+ for j := 1 ; j < n ; j ++ {
67
+ a [i ][j ] = a [i - 1 ][j ] + a [i ][j - 1 ]
68
+ }
69
+ }
70
+
71
+ return a [m - 1 ][n - 1 ]
72
+ }
Original file line number Diff line number Diff line change
1
+ package leetcode_test
2
+
3
+ import (
4
+ "github.com/randomSignal/algorithmWorkbook/leetcode"
5
+ "github.com/stretchr/testify/require"
6
+ "testing"
7
+ )
8
+
9
+ /*
10
+ 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。
11
+
12
+ 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。
13
+
14
+ 问总共有多少条不同的路径?
15
+
16
+
17
+
18
+ 例如,上图是一个7 x 3 的网格。有多少可能的路径?
19
+
20
+
21
+
22
+ 示例 1:
23
+
24
+ 输入: m = 3, n = 2
25
+ 输出: 3
26
+ 解释:
27
+ 从左上角开始,总共有 3 条路径可以到达右下角。
28
+ 1. 向右 -> 向右 -> 向下
29
+ 2. 向右 -> 向下 -> 向右
30
+ 3. 向下 -> 向右 -> 向右
31
+ 示例 2:
32
+
33
+ 输入: m = 7, n = 3
34
+ 输出: 28
35
+
36
+
37
+ 提示:
38
+
39
+ 1 <= m, n <= 100
40
+ 题目数据保证答案小于等于 2 * 10 ^ 9
41
+ 通过次数85,793提交次数143,826
42
+
43
+ 来源:力扣(LeetCode)
44
+ 链接:https://leetcode-cn.com/problems/unique-paths
45
+ 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
46
+ */
47
+
48
+ func TestUniquePaths (t * testing.T ) {
49
+ var res int
50
+
51
+ type Sample struct {
52
+ M int
53
+ N int
54
+ Result int
55
+ }
56
+
57
+ sampleList := []Sample {
58
+ {M : 3 , N : 2 , Result : 3 },
59
+ {M : 7 , N : 3 , Result : 28 },
60
+ {M : 51 , N : 9 , Result : 1916797311 },
61
+ }
62
+ for i := 0 ; i < len (sampleList ); i ++ {
63
+ res = leetcode .UniquePaths (sampleList [i ].M , sampleList [i ].N )
64
+ require .Equal (t , sampleList [i ].Result , res )
65
+ }
66
+ }
You can’t perform that action at this time.
0 commit comments