• python 练习题 289. 生命游戏


    地址:https://leetcode.cn/problems/game-of-life/

     1 '''
     2 给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态: 1 即为 活细胞 (live),或 0 即为 死细胞 (dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:
     3 
     4 如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡; ==1 < 2  0
     5 如果活细胞周围八个位置有两个或三个活细胞,则该位置活细胞仍然存活;==1 ==2 ==3 1
     6 如果活细胞周围八个位置有超过三个活细胞,则该位置活细胞死亡; ==1 >3 0
     7 如果死细胞周围正好有三个活细胞,则该位置死细胞复活; ==0 ==3 1
     8 下一个状态是通过将上述规则同时应用于当前状态下的每个细胞所形成的,其中细胞的出生和死亡是同时发生的。给你 m x n 网格面板 board 的当前状态,返回下一个状态。
     9 
    10 思路:
    11 1.将board copy一份,然后将四周加0补充,这样就不会考虑边界问题
    12 2.判断周围8个相加,满足条件,则修改board的值
    13 3.需要特别注意,不要直接再复制后的值做修改,这样会影响后面的值,题目是要求 同时发生,所以,修改的值直接在board上即可
    14 
    15 '''
    16 
    17 class Solution:
    18     def gameOfLife(self, board: List[List[int]]) -> None:
    19         """
    20         Do not return anything, modify board in-place instead.
    21         """
    22 
    23         m = len(board)
    24         n = len(board[0])
    25         newS =copy.deepcopy(board)
    26         for i in range(m):
    27             newS[i].insert(n,0)
    28             newS[i].insert(0,0)
    29         newS.insert(m,[0 for i in range(n+2)])
    30         newS.insert(0,[0 for i in range(n+2)])
    31 
    32 
    33 
    34         for i in range(1,m+1):
    35             for j in range(1,n+1):
    36                 res = newS[i-1][j] + newS[i-1][j-1] + newS[i-1][j+1] + newS[i+1][j] + newS[i+1][j-1] + newS[i+1][j+1] + newS[i][j+1] +newS[i][j-1]
    37                 if newS[i][j] ==1:
    38                     if res < 2:board[i-1][j-1] =0
    39                     elif res >3:board[i-1][j-1] =0
    40                 else:
    41                     if res ==3:board[i-1][j-1] =1
    来源:力扣(LeetCode)
    链接:https://leetcode.cn/problems/game-of-life
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
  • 相关阅读:
    2019浙江理工校赛有感
    问题 G: 跳马棋
    问题 H: 象棋对局胜负
    问题 C: 远离原点
    问题 B: 合并车厢
    Hibernate 异常汇总
    设计模式
    1.2.1.2.1.12.34.3.1.34.1.2
    数据结构和算法之 查找
    数据结构和算法之排序算法
  • 原文地址:https://www.cnblogs.com/whycai/p/16350933.html
Copyright © 2020-2023  润新知