leetcode習題集 62 不同路徑

2021-09-20 15:21:50 字數 1706 閱讀 1736

乙個機械人位於乙個 m x n 網格的左上角 (起始點在下圖中標記為「start」 )。

機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角(在下圖中標記為「finish」)。

問總共有多少條不同的路徑?

例如,上圖是乙個7 x 3 的網格。有多少可能的路徑?

說明:m 和 n 的值均不超過 100。

示例 1:

輸入: m = 3, n = 2

輸出: 3

解釋:從左上角開始,總共有 3 條路徑可以到達右下角。

向右 -> 向右 -> 向下

向右 -> 向下 -> 向右

向下 -> 向右 -> 向右

示例 2:

輸入: m = 7, n = 3

輸出: 28

public

class

p62_uniquepaths

if(m<

2||n<2)

int min = math.

min(m-

1,n-1)

;return

arrange

(m+n-

2,min)

/arrange

(min,min);}

private

intarrange

(int a,

int b)

return a*

arrange

(a-1

,b-1);

}}

思想:

利用和數學中的排列組合思想,在mxn的方格中一共需要走m+n-2步,從中挑選出n-1步向右即可。即

c(m+n-2,n-1)。此做法會導致階乘時整數溢位。

int count =0;

public

intuniquepaths

(int m,

int n)

private

void

gettoend

(int m,

int n)

else

if(m==

1||n==1)

}

思路:

遞迴做法,先向右遞迴,在向下遞迴,此做法會超時。

public

class

p62_uniquepaths3

for(

int i =

0;i)for

(int i =

1;ireturn box[m-1]

[n-1];

}}

思路:動態規劃

定義box陣列,box[i-1][j-1]表示ixj的方格所有方法條數。

box[0][j]box[i][0]均為1

box[i][j]=box[i-1][j]+box[i][j-1]依次遞推

leetcode習題集 63 不同路徑 II

乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 現在考慮網格中有障礙物。那麼從左上角到右下角將會有多少條不同的路徑?網格中的障礙物和空位置分別用 1 和 0 來表示。說明 m...

Leetcode習題集 鍊錶

這裡記錄一些我刷題的思路方便之後進行複習重溫,同時也方便進行新增 p141 環形鍊錶 class solution listnode reverse listnode head return pre 使用翻轉鍊錶,判斷返回的指標與傳進的指標是否相同,時間複雜度是o n 可能 空間複雜度是o 1 cl...

leetcode習題集 54 螺旋矩陣

給定乙個包含 m x n 個元素的矩陣 m 行,n 列 請按照順時針螺旋順序,返回矩陣中的所有元素。示例 1 輸入 1,2,3 4,5,6 7,8,9 輸出 1,2,3,6,9,8,7,4,5 示例 2 輸入 1,2,3,4 5,6,7,8 9,10,11,12 輸出 1,2,3,4,8,12,11...