algorithm做演算法題,review點評英文文章,tip總結技術技巧,share做技術分享。每週打卡一次,這就是arts打卡。
leetcode289題. 生命遊戲
題目描述:
給定乙個包含 m × n 個格仔的面板,每乙個格仔都可以看成是乙個細胞。每個細胞都具有乙個初始狀態:1 即為活細胞(live),或 0 即為死細胞(dead)。每個細胞與其八個相鄰位置(水平,垂直,對角線)的細胞都遵循以下四條生存定律:
如果活細胞周圍八個位置的活細胞數少於兩個,則該位置活細胞死亡;
如果活細胞周圍八個位置有兩個或三個活細胞,則該位置活細胞仍然存活;
如果活細胞周圍八個位置有超過三個活細胞,則該位置活細胞死亡;
如果死細胞周圍正好有三個活細胞,則該位置死細胞復活;
根據當前狀態,寫乙個函式來計算面板上所有細胞的下乙個(一次更新後的)狀態。下乙個狀態是通過將上述規則同時應用於當前狀態下的每個細胞所形成的,其中細胞的出生和死亡是同時發生的。
示例:輸入:**解題思路:**題目有個關鍵點,同時更新,也就是說根據當前的狀態同時更新下乙個狀態。如果要使用本地演算法(不開闢額外空間),就需要使用臨時狀態,如活到死用-1表示,死到活用2表示。還有乙個問題要考慮,邊界。用乙個元組列表代表八個方向的移動,移動後的位置判斷是否超出模板。[[0,1,0],
[0,0,1],
[1,1,1],
[0,0,0]
]輸出:
[[0,0,0],
[1,0,1],
[0,1,1],
[0,1,0]
]
解題**:
文章i know python basics, what next?介紹了有一定python基礎後如何繼續深入學習和使用python,包含豐富的學習資源。class
solution
:def
gameoflife
(self, board: list[list[
int]])
->
none
:"""
do not return anything, modify board in-place instead.
"""neighbors =[(
-1,-
1),(
-1,0
),(0
,-1)
,(1,
-1),
(-1,
1),(
1,0)
,(0,
1),(
1,1)
] row_len =
len(board)
col_len =
len(board[0]
)for row in
range
(row_len)
:for col in
range
(col_len)
: neighbor_lives =
0for neighbor in neighbors:
r = row + neighbor[0]
c = col + neighbor[1]
if r >=
0and r < row_len and c >=
0and c < col_len and
abs(board[r]
[c])==1
: neighbor_lives +=
1if board[row]
[col]==0
and neighbor_lives ==3:
board[row]
[col]=2
if board[row]
[col]==1
and(neighbor_lives <
2or neighbor_lives >3)
: board[row]
[col]=-
1for row in
range
(row_len)
:for col in
range
(col_len)
:if board[row]
[col]==2
: board[row]
[col]=1
elif board[row]
[col]==-
1:board[row]
[col]
=0
嘗試一下GNU Guile
參考guile的tutoria來建立乙個帶指令碼支援的繪圖程式 1.使用macports安裝guile和gnuplot sudo port install guile gnuplot 2.以管道的方式來操作gnuplot,注意需要在start gnuplot函式新增如下的設定 fprintf out...
嘗試一下GNU Guile
參考guile的tutoria來建立乙個帶指令碼支援的繪圖程式 1.使用macports安裝guile和gnuplot sudo port install guile gnuplot 2.以管道的方式來操作gnuplot,注意需要在start gnuplot函式新增如下的設定 fprintf out...
想嘗試一下WFS
最近想在地圖上做一點小東西好好學習一下,能夠想到的就是在文字框裡輸入乙個乙個地名,提交之後地圖轉到相關位置。本來是想自己寫乙個servlet,結合geotools來進行feature的查詢,這個想法應該是可行的,但是還要開乙個tomcat,再與postgresql建立乙個連線,總是顯得羅唆。第二個想...