zoukankan      html  css  js  c++  java
  • 【leetcode】289. Game of Life

    题目如下:

    解题思路:因为本题要求的是直接在输入的数组上面修改,而且细胞的生死转换是一瞬间的事情,所以需要引入两个中间状态,待死和待活。这两个中间状态用于在四条规则判断的时候是“活”和“死”,但是呈现在最终的结果是“死”和“活”。

    代码如下:

    class Solution(object):
        def getLiveCount(self,board,x,y):
            l = [(0,-1),(0,1),(-1,0),(1,0),(-1,-1),(1,1),(-1,1),(1,-1)]
            count = 0
            for i in l:
                if board[x+i[0]][y+i[1]] == 1 or board[x+i[0]][y+i[1]] == 4:
                    count += 1
            return count
        def gameOfLife(self, board):
            """
            :type board: List[List[int]]
            :rtype: void Do not return anything, modify board in-place instead.
            """
            # 2 means boundary
            # 3 means from dead to live
            # 4 means from live to dead
            for i in board:
                i.append(2)
                i.insert(0,2)
            l = [2] * len(board[0])
            board.append(l[::])
            board.insert(0,l[::])
    
            for i in range(1,len(board)-1):
                for j in range(1,len(board[i])-1):
                    count = self.getLiveCount(board,i,j)
                    if board[i][j] == 0 and count == 3:
                        board[i][j] = 3
                    elif board[i][j] == 1 and (count < 2 or count > 3):
                        board[i][j] = 4
            for i in range(1,len(board)-1):
                for j in range(1,len(board[i])-1):
                    if board[i][j] == 3:
                        board[i][j] = 1
                    elif board[i][j] == 4:
                        board[i][j] = 0
            del board[0]
            del board[-1]
            for i in board:
                del i[0]
                del i[-1]
  • 相关阅读:
    verilog中timescale
    [shell] if语句用法
    makefile编写
    linux下压缩解压缩命令
    python获取文件所在目录
    gvim 技巧
    vcs编译verilog/sysverilog并执行
    verilog中signed的使用
    [leetcode]_String to Integer (atoi)
    [leetcode]_Minimum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/seyjs/p/9660754.html
Copyright © 2011-2022 走看看