【LeetCode-数组】生命游戏
2021-04-21 00:27
标签:需要 空间复杂度 strong amp 状态 dea 时间复杂度 根据 生命游戏 根据?百度百科?,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。 给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1 即为活细胞(live),或 0 即为死细胞(dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律: 根据当前状态,写一个函数来计算面板上所有细胞的下一个(一次更新后的)状态。下一个状态是通过将上述规则同时应用于当前状态下的每个细胞所形成的,其中细胞的出生和死亡是同时发生的。 题目连接: https://leetcode-cn.com/problems/game-of-life/ 通过当前细胞 board[i][j] 周围 8 个位置的细胞状态: 因为所有细胞是同时更新状态的,所以我们将原来的细胞状态复制一份,根据副本来判断当前细胞的下一个状态,并且不受其他细胞下一个状态的影响。代码如下: 思路一需要保存输入状态的一个副本,空间复杂度为 O(m x n),我们可以通过添加额外的状态来将空间复杂度降到 O(1)。 状态的变化有 3 种:0->1、1->0,不变。我们使用 3 表示 0 转为 1,例如,board[i][j]=3 说明 board[i][j] 之前的状态是 0,下一时刻的状态是 1,设为 3 是为了不影响其他细胞的状态。同理,board[i][j]=-1 说明 board[i][j] 之前的状态是 1,下一时刻的状态是 0. 当处理完成后,我们将数组中大于 0 的数都置为 1,其余的都置为 0. 代码如下: 【LeetCode-数组】生命游戏 标签:需要 空间复杂度 strong amp 状态 dea 时间复杂度 根据 生命游戏 原文地址:https://www.cnblogs.com/flix/p/13284166.html题目描述
示例:输入:
[
? [0,1,0],
? [0,0,1],
? [1,1,1],
? [0,0,0]
]
输出:
[
? [0,0,0],
? [1,0,1],
? [0,1,1],
? [0,1,0]
]
思路1
class Solution {
public:
void gameOfLife(vector
思路2
class Solution {
public:
void gameOfLife(vector
上一篇:【Java】可变参数
下一篇:如果没有了Spring....