python演算法每日練習day01

2021-10-03 12:12:27 字數 1307 閱讀 1085

2.使用的是bfs(廣度優先遍歷)+佇列(先進先出)完成的

題目:[

[2,1,1],

[1,1,0],

[0,1,1]

]2-腐爛,1-新鮮,0-空

每分鐘任何與腐爛的橘子相鄰的新鮮橘子都會腐爛,返回直到單元格中沒有新鮮橘子為止所必須經過的最小分鐘數。如果不可能,返回 -1,沒有新鮮橘子返回0

直接上**

class

solution

:def

orangesrotting

(self, grid: list[list[

int]])

->

int:

#如果沒有新鮮橘子

l =[y for i in grid for y in i]if1

notin l:

return

0 x =

len(grid)

#行 y =

len(grid[0]

)#列time =

0#四個方向

locs =[(

-1,0

),(1

,0),

(0,-

1),(

0,1)

]#上下左右

#模擬乙個佇列

q =#把所有腐爛的橘子放入佇列中

for i in

range

(x):

for j in

range

(y):

if grid[i]

[j]==2:

#從最右端加入

(i, j,0)

)#遍歷佇列裡所有腐爛的橘子,直到為空

while q:

#從左端彈出

i, j , time= q.pop(0)

for loc in locs:

loc_i, loc_j = i+loc[0]

, j+loc[1]

#判斷腐爛的橘子上下左右是否有新鮮橘子,有的話就會腐爛if0

<= loc_i < x and

0<= loc_j < y and grid[loc_i]

[loc_j]==1

: grid[loc_i]

[loc_j]=2

(loc_i, loc_j, time+1)

)#最後判斷還有沒有新鮮橘子

for g in grid:if1

in g:

return-1

return time

每日練習 Day014

b s 與 c s 的聯絡與區別。c s client server 結構,即大家熟知的客戶機和伺服器結構。它是軟體系統體系結構,通過它可以充分利用兩端硬體環境的優勢,將任務合理分配到 client 端和 server 端來實現,降低了系統的通訊開銷。b s browser server 結構即瀏覽...

每日練習 Day015

dom 操作怎樣新增 移除 移動 複製 建立和查詢節點?表名 food 欄位名字段描述 資料型別 外來鍵非空 唯一自增 id編號 int是是是 是name 食品公司 varchar 20 是company 生產廠商 varchar 30 是price 單位 圓 float produce time ...

每日python練習

python 計算列表元素之積 def multiplylist mylist result 1 for x in mylist result result x return result list1 1,2,3 list2 4,5,6 print multiplylist list1 print ...