用位运算节省空间
0X00 例子
- 动态规划的空间优化(滚动数组)
- 少状态时用位运算在原地记录状态
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
推荐阅读
- Shell-Bash变量与运算符
- Lesson11——NumPy|Lesson11——NumPy 位运算
- 二、Dart基础语法|二、Dart基础语法 (二)运算符 类
- JavaScript其他运算符
- C++运算符重载的方法详细解析
- JS中 &&、|| 和 & 、| 的使用
- 空值合并运算符(??)
- 微软|关闭你不需要的服务,节省你的内存!
- 【JavaScript Weekly #570】重新思考三元运算符
- 动态规划|动态规划 —— 状压DP (附一些位运算小知识)