乙個機械人位於乙個 m x n 網格的左上角 。
機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角。
現在考慮網格中有障礙物。那麼從左上角到右下角將會有多少條不同的路徑?
網格中的障礙物和空位置分別用 1 和 0 來表示。
說明:m 和 n 的值均不超過 100。
原題是有圖的,但是我懶得粘過來,大概就是從左上角走到右下角有多少種走法,並且為了增加難度加入了障礙。
這是一道明顯的動態規劃,做出如下考慮:當機械人位於某點 (x, y) 時,該機械人只可能是從該點的上方或左方過來的,那就有到達該點的走法數量 = 走到該點上方的走法 + 走到該點左方的走法,即狀態轉移方程為f[i][j] = f[i - 1][j] + f[i][j - 1],由於有的點為障礙而無法通過,將該點標記為 0 即可,**如下:
int
uniquepathswithobstacles
(vectorint>>
& obstaclegrid)
int m = obstaclegrid.
size()
, n = obstaclegrid[0]
.size()
; vectorint>>
v(m,vector<
int>
(n,0))
;for
(int i =
0; i < m; i++
)else
if(i ==
0&& j ==0)
else
if(i -
1<0)
else
if(j -
1<0)
else}}
return v[m -1]
[n -1]
;}
2023年6月29日打卡
在未排序的陣列中找到第 k 個最大的元素。請注意,你需要找的是陣列排序後的第 k 個最大的元素,而不是第 k 個不同的元素。本題核心在於排序,本題目前沒有發現排序外的解法,那核心就是如何降低排序的複雜度。氣泡排序可以作為一種解法,但 o n2 的時間複雜度有點不太好,經同學嘗試可以通過。我採用的是c...
2023年9月6日 學習
一 一條sql執行時間過長,你如何優化,從哪些方面?1.檢視sql是否涉及多表的聯表查詢或者子查詢,如果有的話,看是否能進行業務拆分,相關字段冗餘的話合併成臨時表 2.涉及鍊錶的查詢,是否能進行分表查詢,單錶查詢後的結果進行字段整合 3.如果上述兩種方式都不管用的話,非要鍊錶查詢的話,那麼考慮對相應...
2023年7月10日筆記
問題1 from operator import itemgetter 用法 a itemgetter 1 取a的第1個元素 問題2 pycharm debug的用法。問題3 axis 0 和axis 1的區別 1表示橫軸,方向從左到右 0表示縱軸,方向從上到下。問題1 from operator ...