2023年7月6日打卡

2021-10-07 19:37:58 字數 945 閱讀 6532

乙個機械人位於乙個 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 ...