0X00 例子
- 動(dòng)態(tài)規(guī)劃的空間優(yōu)化(滾動(dòng)數(shù)組)
0 ^ 1 = 0 1 ^ 1 = 0
- 少狀態(tài)時(shí)用位運(yùn)算在原地記錄狀態(tài)
class Solution:
def gameOfLife(self, board: List[List[int]]) -> None:
if not len(board): return
m, n = len(board), len(board[0])
for i in range(m):
for j in range(n):
s = board[i][j]
cnt = 0
for x in range(i-1, i+2):
for y in range(j-1, j+2):
if x < 0 or y < 0 or x >= m or y >= n: continue
if x == i and y == j: continue
if board[x][y] & 1: cnt += 1
# print(cnt)
if s & 1:
if cnt < 2 or cnt > 3: s |= 4
else: s |= 8
else:
if cnt == 3: s |= 2
else: s |= 16
board[i][j] = s
# print(board)
for i in range(m):
for j in range(n):
s = board[i][j]
if s & 2 or s & 8: s = 1
else: s = 0
board[i][j] = s