leetcode刷题日志-289生命游戏

2023-12-16 14:12

本文主要是介绍leetcode刷题日志-289生命游戏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述
在这里插入图片描述
思路:用一个m*n的矩阵储存当前元素周围为1的元素数量

    /*** 为了保证当前修改后的状态不会影响下一个状态的判定,设置另外的状态* 如题所示,只有三种:* 1. 如果当前是活细胞,但是变成了死细胞,那么设置为-1* 2. 如果当前是活细胞,仍然是活细胞,那么不变仍为1* 3. 如果当前是死细胞,但是变成了活细胞,那么设置为2* 那么最后遍历修改完状态之后,将-1修改回为0,2修改回为1* @param board*/class Solution {public void gameOfLife(int[][] board) {//设置方向来遍历某个节点周围的另外几个节点int[] ner = new int[]{-1,0,1};//获取行和列int rows  = board.length;int cols = board[0].length;//遍历每一个节点格子for (int row = 0; row < rows; row++) {for (int col = 0; col < cols; col++) {//设置当前节点周围的存活细胞的数量int liveNer = 0;/*** 当前节点是[ i , j ]* [i-1,j-1]    [i-1,j]    [i-1,j+1]* [ i ,j-1]    [ i ,j]    [ i ,j+1]* [i+1,j-1]    [i+1,j]    [i+1,j+1]* 那么以当前节点为中心,要求周围的节点,则最多是3*3形式* 并且所有的行和列都是用当前节点+1或者-1或者不变构成* 所以我们设置 ner = {-1,0,1} 来形成遍历*/for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {//必须保证不计算当前节点(不计算自己)if (!(ner[i]==0 && ner[j]==0)){//当前节点的相邻节点坐标int r = row+ner[i];int c = col+ner[j];/**判断当前周围节点的存活状态,要求满足两个状态* 1. 必须保证要在 board 矩阵中* 2. 并且起始状态要是存活,则当前状态为1或者-1都可以(因为这两个状态都表示起始状态为活细胞)**/if ((r>=0&&r<rows) && (c>=0&&c<cols) && (Math.abs(board[r][c])==1)){liveNer++;}}}}/**开始判断当前节点的存活状态* 因为遍历到当前节点的时候,还没有开始修改细胞状态,所以还是0和1的细胞状态* 那么只需要判断状态变化的即可,否则状态不变**/if ((board[row][col]==1) && ( liveNer>3 || liveNer<2)){// -1 代表这个细胞过去是活的现在死了board[row][col]=-1;}if (board[row][col]==0 && ( liveNer==3)){// 2 代表这个细胞过去是死的现在活了board[row][col]=2;}}}//再把额外的状态修改回去for (int row = 0; row < rows; row++) {for (int col = 0; col < cols; col++) {if (board[row][col] == 2) {board[row][col] = 1;}if (board[row][col] == -1){board[row][col] = 0;}}}}}

这篇关于leetcode刷题日志-289生命游戏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/500772

相关文章

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

解读GC日志中的各项指标用法

《解读GC日志中的各项指标用法》:本文主要介绍GC日志中的各项指标用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、基础 GC 日志格式(以 G1 为例)1. Minor GC 日志2. Full GC 日志二、关键指标解析1. GC 类型与触发原因2. 堆

MySQL 打开binlog日志的方法及注意事项

《MySQL打开binlog日志的方法及注意事项》本文给大家介绍MySQL打开binlog日志的方法及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、默认状态二、如何检查 binlog 状态三、如何开启 binlog3.1 临时开启(重启后失效)

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Golang 日志处理和正则处理的操作方法

《Golang日志处理和正则处理的操作方法》:本文主要介绍Golang日志处理和正则处理的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录1、logx日志处理1.1、logx简介1.2、日志初始化与配置1.3、常用方法1.4、配合defer

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性

Nacos日志与Raft的数据清理指南

《Nacos日志与Raft的数据清理指南》随着运行时间的增长,Nacos的日志文件(logs/)和Raft持久化数据(data/protocol/raft/)可能会占用大量磁盘空间,影响系统稳定性,本... 目录引言1. Nacos 日志文件(logs/ 目录)清理1.1 日志文件的作用1.2 是否可以删除

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、

使用nohup和--remove-source-files在后台运行rsync并记录日志方式

《使用nohup和--remove-source-files在后台运行rsync并记录日志方式》:本文主要介绍使用nohup和--remove-source-files在后台运行rsync并记录日... 目录一、什么是 --remove-source-files?二、示例命令三、命令详解1. nohup2.