ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

LeetCode289 生命游戏(模拟)

2022-07-05 12:32:17  阅读:311  来源: 互联网

标签:count direction cur range LeetCode289 live board 模拟 游戏


LeetCode289 生命游戏

使用扩展标签保留更新之前的信息

这里原来是0,现在是1,标记为2;原来是1,现在是0,标记为-1。保留本轮更新之前的值

最后在遍历更新为0或1

class Solution:
    def gameOfLife(self, board: List[List[int]]) -> None:
        """
        Do not return anything, modify board in-place instead.
        """
        direction = [(-1, -1), (-1, 0), (-1, 1), (0, -1), (0, 1), (1, -1), (1, 0), (1, 1)]
        m, n = len(board), len(board[0])

        def count_live(x, y):
            count = 0
            for to_x, to_y in direction:
                cur_x, cur_y = x + to_x, y + to_y
                if cur_x >= 0 and cur_x < m and cur_y >= 0 and cur_y < n:
                    if (board[cur_x][cur_y] == 1 or board[cur_x][cur_y] == -1): count += 1
            
            return count

        def count_dead(x, y):
            count = 0
            for to_x, to_y in direction:
                cur_x, cur_y = x + to_x, y + to_y
                if cur_x >= 0 and cur_x < m and cur_y >= 0 and cur_y < n:
                    if (board[cur_x][cur_y] == 0 or board[cur_x][cur_y] == 2): count += 1
            
            return count
        
        for i in range(m):
            for j in range(n):
                if board[i][j] == 0 and count_live(i, j) == 3: board[i][j] = 2
                elif board[i][j] == 1 and (count_live(i, j) < 2 or count_live(i, j) > 3): board[i][j] = -1
        
        for i in range(m):
            for j in range(n):
                if board[i][j] == 0 or board[i][j] == -1: board[i][j] = 0
                elif board[i][j] == 1 or board[i][j] == 2: board[i][j] = 1

标签:count,direction,cur,range,LeetCode289,live,board,模拟,游戏
来源: https://www.cnblogs.com/solvit/p/16445965.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有