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

相关文章

SpringBoot日志级别与日志分组详解

《SpringBoot日志级别与日志分组详解》文章介绍了日志级别(ALL至OFF)及其作用,说明SpringBoot默认日志级别为INFO,可通过application.properties调整全局或... 目录日志级别1、级别内容2、调整日志级别调整默认日志级别调整指定类的日志级别项目开发过程中,利用日志

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

java -jar example.jar 产生的日志输出到指定文件的方法

《java-jarexample.jar产生的日志输出到指定文件的方法》这篇文章给大家介绍java-jarexample.jar产生的日志输出到指定文件的方法,本文给大家介绍的非常详细,对大家的... 目录怎么让 Java -jar example.jar 产生的日志输出到指定文件一、方法1:使用重定向1、

c++日志库log4cplus快速入门小结

《c++日志库log4cplus快速入门小结》文章浏览阅读1.1w次,点赞9次,收藏44次。本文介绍Log4cplus,一种适用于C++的线程安全日志记录API,提供灵活的日志管理和配置控制。文章涵盖... 目录简介日志等级配置文件使用关于初始化使用示例总结参考资料简介log4j 用于Java,log4c

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

nginx配置错误日志的实现步骤

《nginx配置错误日志的实现步骤》配置nginx代理过程中,如果出现错误,需要看日志,可以把nginx日志配置出来,以便快速定位日志问题,下面就来介绍一下nginx配置错误日志的实现步骤,感兴趣的可... 目录前言nginx配置错误日志总结前言在配置nginx代理过程中,如果出现错误,需要看日志,可以把

Python38个游戏开发库整理汇总

《Python38个游戏开发库整理汇总》文章介绍了多种Python游戏开发库,涵盖2D/3D游戏开发、多人游戏框架及视觉小说引擎,适合不同需求的开发者入门,强调跨平台支持与易用性,并鼓励读者交流反馈以... 目录PyGameCocos2dPySoyPyOgrepygletPanda3DBlenderFife

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

游戏闪退弹窗提示找不到storm.dll文件怎么办? Stormdll文件损坏修复技巧

《游戏闪退弹窗提示找不到storm.dll文件怎么办?Stormdll文件损坏修复技巧》DLL文件丢失或损坏会导致软件无法正常运行,例如我们在电脑上运行软件或游戏时会得到以下提示:storm.dll... 很多玩家在打开游戏时,突然弹出“找不到storm.dll文件”的提示框,随后游戏直接闪退,这通常是由于