Leetcode力扣秋招刷题路-0289

news2024/11/16 15:50:31

从0开始的秋招刷题路,记录下所刷每道题的题解,帮助自己回顾总结

289. 生命游戏

根据 百度百科 , 生命游戏 ,简称为 生命 ,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。

给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态: 1 即为 活细胞 (live),或 0 即为 死细胞 (dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:

如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡;
如果活细胞周围八个位置有两个或三个活细胞,则该位置活细胞仍然存活;
如果活细胞周围八个位置有超过三个活细胞,则该位置活细胞死亡;
如果死细胞周围正好有三个活细胞,则该位置死细胞复活;
下一个状态是通过将上述规则同时应用于当前状态下的每个细胞所形成的,其中细胞的出生和死亡是同时发生的。给你 m x n 网格面板 board 的当前状态,返回下一个状态。

示例 1:
在这里插入图片描述

输入:board = [[0,1,0],[0,0,1],[1,1,1],[0,0,0]]
输出:[[0,0,0],[1,0,1],[0,1,1],[0,1,0]]

示例 2:
在这里插入图片描述

输入:board = [[1,1],[1,0]]
输出:[[1,1],[1,1]]

提示:
m == board.length
n == board[i].length
1 <= m, n <= 25
board[i][j] 为 0 或 1

进阶:
你可以使用原地算法解决本题吗?请注意,面板上所有格子需要同时被更新:你不能先更新某些格子,然后使用它们的更新后的值再更新其他格子。
本题中,我们使用二维数组来表示面板。原则上,面板是无限的,但当活细胞侵占了面板边界时会造成问题。你将如何解决这些问题?

题解
假定一个细胞坐标(x,y),则其四周细胞的坐标为:
在这里插入图片描述

 public void gameOfLife(int[][] board) {
        //周围八个位置的相对坐标 x
        int [] x0 = new int []{-1,-1,-1,0,0,1,1,1};
        //周围八个位置的相对坐标 y
        int [] y0 = new int []{-1,0,1,-1,1,-1,0,1};
        for (int i = 0; i < board.length; i++) {
            for (int j = 0; j <  board[i].length; j++) {
                int liveNum = 0;
                for (int k = 0; k < 8; k++) {
                    int x = i + x0[k];
                    int y = j + y0[k];
                    //检测数组越界
                    if(x<0 || y<0 || x>board.length-1 || y>board[x].length-1){
                        continue;
                    }
                    //用10来标识 变为0的细胞, 用11来标识变为1的细胞。
                    //计算刚开始八个方向的存活细胞(因为细胞的出生和死亡同时发生)
                    if(board[x][y] == 1 || board[x][y] == 10){
                        liveNum ++;
                    }
                }
                //根据条件进行 细胞的死亡和复活
                if(board[i][j] == 1 && (liveNum<2 || liveNum>3)){
                    board[i][j] =10;
                } else if(board[i][j] == 0 && liveNum == 3){
                    board[i][j] = 11;
                }
            }
        }
        //将10转变为0, 11转变为1
        for (int i = 0; i < board.length; i++) {
            for (int j = 0; j <  board[i].length; j++){
                if (board[i][j] == 10) {
                    board[i][j] = 0;
                }else if(board[i][j] == 11){
                    board[i][j] = 1;
                }
            }
        }
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/420030.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

应届生,实力已超6年,太卷了!

你好&#xff0c;我是田哥今晚上&#xff0c;给一位朋友做模拟面试&#xff0c;原本说好的90分钟左右&#xff0c;结果整了2个多小时。很多人估计也很好奇&#xff0c;我们这两个多小时聊聊什么&#xff0c;下面我给大致总结一下&#xff1a;面试技巧面试中&#xff0c;我们回答…

企业招采系统实现方案(SRM系统)

企事业数字化转型专家&#xff0c;提供各类应用解决方案。您身边的赋能小助手&#xff01; 文章目录前言一、当下采购的痛点二、解决方案-供应商管理1.供应商管理三、解决方案-企业询价、供应商报价管理四、解决方案-采购订单五、送货、到货、订单管理总结前言 随着各类产业链…

JS实用技巧断点调试详解

调试能力是一个程序员的生存根本&#xff0c;可是很多初学者却忽视调试。今天我们就来讨究一下JS的调试技巧。本文章将会详细列举JS相关的各种实用调试技巧。 如果您是JS的初学者&#xff0c;那么这篇文章将对您有很大的帮助。为什么要调试&#xff1f;程序就是函数堆砌起来的…

智驾升级!ADB+AFS「起势」

目前&#xff0c;乘用车前大灯已经完成从传统卤素、氙气到LED的转型升级&#xff0c;高工智能汽车研究院监测数据显示&#xff0c;2022年中国市场&#xff08;不含进出口&#xff09;乘用车前装标配LED前大灯搭载率达到75.99%&#xff0c;同比2021年提高约7个百分点。 而相比而…

2023.4.16 第四十九次周报-2

目录 前言 文献阅读 :基于动态分类的长短期记忆网络模型&#xff0c;用于不同气候区日流量预报 背景 主要贡献 思路 动态分类 &#xff08;DC&#xff09; 方法 DC-LSTM 和 DC-B-LSTM 模型 Box -Cox数据转换 模型性能评估指标 克里金插值源码总结 第一部分 第二部分…

网络连通性测试-防甩锅套路

一、前言 为什么要写这个东西呢&#xff1f;怎么涉及到甩锅呢&#xff1f;说白了就是在各种对接过程中&#xff0c;总会遇到一些喜欢甩锅的人&#xff0c;说是你的问题&#xff0c;什么网络没毛病&#xff0c;是你的接口什么的不对&#xff0c;总之就是你的问题~ 这时候什么最…

游戏解密之常见网络游戏同步方式分析

一、为什么需要有同步呢&#xff1f; 同步机制是用来维护游戏的一致性&#xff0c;通俗的说就是虚拟世界中的事实&#xff1b;比如在CF中&#xff0c;大家的PING都很高&#xff0c;A和B两个玩家同时发现了对方&#xff0c;并向对方开火&#xff0c;如果没有很好的同步机制&…

50 Projects 50 Days - Rotating Navigation Animation 学习记录

项目地址 Rotating Navigation Animation 展示效果 Rotating Navigation Animation 实现思路 结构主要分为两部分&#xff0c;绕左上角旋转的部分&#xff1a;包括按钮圆盘和内容区&#xff0c;以及左下角移出的导航栏部分。 整个界面只在左上角圆盘的按钮点击时发生改变…

Sarsa VS Q-Learning

前言 1.如何计算价值函数&#xff1f; 为了使模型训练的最好&#xff0c;学习到更多有用的知识即完成任务的最好策略。对策略好坏的评价标准自然是得到最多最好的奖励&#xff0c;那么如何找到最好的最好的奖励&#xff0c;即如何得到最好的价值函数&#xff1f; 首先对于在状…

Leetcode.2280 表示一个折线图的最少线段数

题目链接 Leetcode.2280 表示一个折线图的最少线段数 Rating &#xff1a; 1681 题目描述 给你一个二维整数数组 stockPrices&#xff0c;其中 stockPrices[i] [dayi, pricei]表示股票在 dayi的价格为 pricei 。折线图 是一个二维平面上的若干个点组成的图&#xff0c;横坐标…

ROS学习——艰辛的环境安装之路一Ubuntu

文章目录Ubuntu安装和下载页面设置安装Vmware Tools安装VSCODE用几个常用命令简单熟悉下UbuntuUbuntu 安装和下载 Ubuntu的安装和下载 看这个链接 Ubuntu安装和下载1 或者这个链接 Ubuntu安装和下载2 页面设置 安装Vmware Tools 看这个链接 VMware Tools的介绍和安装 安装…

算法训练第五十五天 | 392.判断子序列、115.不同的子序列

动态规划part15392.判断子序列题目描述思路总结115.不同的子序列题目描述思路392.判断子序列 题目链接&#xff1a;392.判断子序列 参考&#xff1a;https://programmercarl.com/0392.%E5%88%A4%E6%96%AD%E5%AD%90%E5%BA%8F%E5%88%97.html 题目描述 给定字符串 s 和 t &…

RabbitMQ 基础篇 | 黑马

目录 一、RabbitMQ简介 1、AMQP 2、基本概念 3、工作模式 4、JMS 5、小结 二、快速入门 简单模式 生产者 消费者 三、工作模式 1、Work queues 工作队列模式 2、Pub/Sub 订阅模式 3、Routing 路由模式 4、Topics 通配符模式 四、SpringBoot整合RabbitMQ 1、生产…

ESP32设备驱动-BME680环境传感器驱动

BME680环境传感器驱动 文章目录 BME680环境传感器驱动1、BME680介绍2、硬件准备3、软件准备4、驱动实现1、BME680介绍 BME680 是一款集成环境传感器,专为尺寸和低功耗是关键要求的移动应用和可穿戴设备而开发。 BME680 扩展了 Bosch Sensortec 现有的环境传感器系列,首次集成…

电影《龙马精神》观后感

上周看了龙叔的电影《龙马精神》&#xff0c;整体故事围绕着一匹马而展开的&#xff0c;因为这匹马&#xff0c;饰演罗师傅的龙叔&#xff0c;被小混混催债&#xff0c;因为这匹马&#xff0c;罗师傅才有机会和女儿接触&#xff0c;因为这匹马&#xff0c;才有机会看见女婿。 看…

数据结构-排序

本节目标&#xff1a; 1.排序的概念及其运用 2.常见排序算法的实现 3.排序算法复杂度及稳定性分析 1.排序的概念及其应用 1.1排序的概念 排序就是按照某个我们设定的关键字&#xff0c;或者关键词&#xff0c;递增或者递减&#xff0c;完成这样的操作就是排序。 1.2排…

打开组策略提示:无法为文件xxx找到适当的资源文件,错误=2的解决方法

最近把自己的电脑升级成win11了&#xff0c;出现了一些bug&#xff0c;不见得是win11系统的问题&#xff0c;也可能是某个过程出现了问题&#xff0c;出现了问题咱就解决&#xff0c;参考了几个文档和视频&#xff0c;最终解决了&#xff0c;记录一下。 打开本地策略出现问题如…

7.Java中的String类、常用类及包装类

Java中的String类、常用类及包装类 一、String类 1、String类定义 String 类代表字符串。Java 程序中的所有字符串字面值&#xff08;如 “abc” &#xff09;都作为此类的实例实现。字符串是常量&#xff1b;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为…

2023爱分析·中国城市轨交智能运维市场厂商评估报告:逸迅科技

报告编委 张扬 爱分析联合创始人&首席分析师 王鹏 爱分析分析师 目录 1. 研究背景 2. 市场综述 3. 市场分析 4. 厂商评估&#xff1a;逸迅科技 5. 最佳实践案例 1. 研究背景 轨道交通是我国国民经济的命脉和交通运输的骨干网络&#xff0c;不仅承担了绝大…

RocketMQ 消息发送源码解读

可靠同步发送、可靠异步发送、单向发送、批量消息发送。 RocketMQ 消息发送需要考虑以下3个问题。 1&#xff09;消息队列如何进行负载&#xff1f; 2&#xff09;消息发送如何实现高可用&#xff1f; 3&#xff09;批量消息发送如何实现一致性&#xff1f; org.apache.rocketm…