当前位置: 首页 > news >正文

位操作解决数组的花样遍历

文章目录

题目

一、思路:

二、代码

总结


题目

leetcodeT289 https://leetcode.cn/problems/game-of-life/description/


一、思路:

这题思路很简单,对每个位置按照题目所给规则进行遍历,判断周围网格的活细胞数即可。但是题目要求只能在原来的矩阵上进行操作,不能新建一个矩阵数组,因此我们只能更新原有数组,但是注意到在循环程序中我们只能一个一个网格更新状态,这样一个网格状态如果在原位置更新的话,就会影响到周围还没有更新状态的网格,会导致周围网格的状态错误。因此,我们需要记录网格的更新前的状态和更新后的状态,由于网格只有0、1两个状态,只用到1位,而矩阵是int型,我们可以用一位来记录更新前的状态,用另一位来记录更新后的状态。

二、代码

class Solution {public void gameOfLife(int[][] board) {int n = board.length;int m = board[0].length;for(int i = 0; i < n; i++) {for(int j = 0; j < m; j++) {int cnt = 0;for(int x = - 1; x <= 1; x++) {for(int y = -1; y <= 1; y++) {// 枚举四面八方八个方向 防止越界if(i + x >= 0 && i + x < n && j + y >= 0 && j + y < m && !(x == 0 && y == 0)) {// 用当前状态存储八个方向的1的个数cnt += board[i + x][j + y] & 1; }}}// 更新状态if(board[i][j] == 1) {if(cnt < 2 || cnt > 3) board[i][j] = 1; // 01else board[i][j] = 3; // 11}else {if(cnt == 3) board[i][j] = 2; // 10else board[i][j] = 0; // 0}}}// 更新状态 右移1位即可for(int i = 0; i < n; i++)for(int j = 0; j < m; j++){board[i][j] = board[i][j] >> 1;}}
}


总结

通过二进制位运算的思想可以存储两个状态,用来避免更新对下面操作的影响。

http://www.lryc.cn/news/458855.html

相关文章:

  • 【面试宝典】深入Python高级:直戳痛点的题目演示(下)
  • Hive数仓操作(十七)
  • 工业和自动化领域常见的通信协议
  • 连夜爆肝收藏各大云服务新老用户优惠活动入口地址(内含免费试用1个月的地址),适用于小白,大学生,开发者,小企业老板....
  • SpringBoot+Redis+RabbitMQ完成增删改查
  • 【系统集成中级】线上直播平台开发项目质量管理案例分析
  • 浪潮信息领航边缘计算,推动AI与各行业深度融合
  • Koa2项目实战3 (koa-body,用于处理 HTTP 请求中的请求体)
  • 复盘20241012
  • 泊松流负载均衡控制
  • 3D打印矫形器市场报告:未来几年年复合增长率CAGR为10.8%
  • Richtek立锜科技线性稳压器 (LDO) 选型
  • Leetcode 前 k 个高频元素
  • [LeetCode] 面试题01.02 判定是否互为字符重拍
  • 数据结构-4.5.KMP算法(旧版上)-朴素模式匹配算法的优化
  • STM32 QSPI接口驱动GD/W25Qxx配置简要
  • UCI-HAR数据集深度剖析:训练仿真与可视化解读
  • 牛客SQL练习详解 06:综合练习
  • k8s apiserver高可用方案
  • 服务器数据恢复—硬盘坏扇区导致Linux系统服务器数据丢失的数据恢复案例
  • 【多线程】多线程(12):多线程环境下使用哈希表
  • 轻量服务器和云服务器ecs哪个好用一些?
  • 【交通标志识别系统】Python+卷积神经网络算法+人工智能+深度学习+机器学习+算法模型
  • 特种设备作业叉车司机试题附答案
  • 【Nginx系列】Nginx启动失败
  • 2024/10/12 计组大题专训
  • 2024年腾讯外包面试题(微创公司)
  • nginx运行时报:No rule to make target ‘build‘, needed by ‘deault‘.Stop
  • dvwa:暴力破解、命令注入、csrf全难度详解
  • Java-学生管理系统[初阶]