Lunski's Clutter

This is a place to put my clutters, no matter you like it or not, welcome here.

0%

62. 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?

Example 1:

1
2
Input: m = 3, n = 7
Output: 28

Example 2:

1
2
3
4
5
6
7
Input: m = 3, n = 2
Output: 3
Explanation:
From the top-left corner, there are a total of 3 ways to reach the bottom-right corner:
1. Right -> Down -> Down
2. Down -> Down -> Right
3. Down -> Right -> Down

Example 3:

1
2
3
4
5
6
Input: m = 7, n = 3
Output: 28
Example 4:

Input: m = 3, n = 3
Output: 6

step down:3, step right: 7
ddrrrrrr: move 2d6r
rrrrrrdd: move 2d6r

all move 8, select 2 down
C8,2= 8!/2!(8-2)! =8765432/265432=87/2=28

1
2
3
4
5
6
# TC: O(1), SC: O(1)
from math import factorial
import math
class Solution:
def uniquePaths(self, m: int, n: int) -> int:
return int(factorial(m+n-2) / (factorial(m-1) * factorial(n-1)))

DP

1
2
3
4
5
6
7
8
9
10
# TC: O(mn), SC: O(n)
class Solution:
def uniquePaths(self, m: int, n: int) -> int:
dp=[[1]*n for _ in range(m)]

for i in range(1, m):
for j in range(1, n):
dp[i][j] = dp[i-1][j]+dp[i][j-1]
return dp[-1][-1]


如果你覺得這篇文章很棒,請你不吝點讚 (゚∀゚)

Welcome to my other publishing channels