首页 > 编程语言 >编程技巧-索引标记法

编程技巧-索引标记法

时间:2023-03-22 22:38:21浏览次数:30  
标签:map return 标记 int liveCount 编程 索引 currentStatus put


在本周的Code Review中,从Pair学到一个技巧--索引标记法(暂且叫这个名称)

题目

以任意一个Cell中心,根据8个邻居状态,判断该Cell下一个状态:如果2个活着那么保持状态不变,3个邻居活者也为活,其他情况都是死。普通程序是这样的(0表示死,1表示活):

public int nextStatus(int currentStatus, int liveCount) {
        switch (liveCount) {
            case 2:
                return currentStatus;
            case 3:
                return 1;
            default:
                return 0;
        }
    }


但是由于不能使用switch以及for怎么办呢?

如何解决

再分析一下静态的数据如下

[ 0->0 , 1->0 , 2->current_status , 3->1 , 4->0 , 5->0 , 6->0 , 7->0 , 8->0]



方法1:map

public int nextStatus(boolean currentStatus, int liveCount) {
        Map<Integer, Boolean> map = new HashMap<Integer, Boolean>();
        map.put(0, 0);
        map.put(1, 0);
        map.put(2, currentStatus);
        map.put(3, 1);
        map.put(4, 0);
        map.put(5, 0);
        map.put(6, 0);
        map.put(7, 0);
        map.put(8, 0);
        return map.get(liveCount);
    }


有没有发现这样太傻,而且不太友好

方法2:bitmap

恭喜你上道了,开始思考了,使用BitSet,也可以

方法3:重点

public int nextStatus(int liveCount) {
        return new int[]{0, 0, 0, 1, 0, 0, 0, 0, 0}[liveCount];
    }


有没发现被蒙到了,其实把数据是数据静态的结构多变的。



标签:map,return,标记,int,liveCount,编程,索引,currentStatus,put
From: https://blog.51cto.com/alex/6143453

相关文章

  • 模糊查询下(like)如何使用覆盖索引优化
    在MySQL中,like‘string%’可以用到索引,但是like‘%string%’却会全表扫描。这个是常识,但真的就没有解决方法了吗?有的,要使用到索引覆盖。什么叫覆盖索引?解释一:就是select......
  • Google Guice 入门教程05 - AOP(面向切面编程)
    2AOP面向切面编程2.1AOP入门在前面的章节主要讲Guice的依赖注入,有了依赖注入的基础后我们再来看Guice的AOP。我们先从一个例子入手,深入浅出的去理解Guice的AOP的原理和实......
  • 让你的vscode搭载ChatGPT获得来自 AI 的编程指导
    一直以来,VSCode都是开发者心目中的生产力神器,它免费、开源且跨平台,被称为最好用的IDE。把VSCode和ChatGPT结合使用,用户将获得来自AI的编程指导,包括代码解释、找......
  • tcp网络编程4—并发的io多路复用实现(select)
    原型:intselect(intmaxfdp1,fd_set*readfds,fd_set*writefds,fd_set*exceptfds,structtimeval*timeout)功能:委托内核检查描述符集是否准备好(即可以......
  • Python 四大主流 Web 编程框架
    目前Python的网络编程框架已经多达几十个,逐个学习它们显然不现实。但这些框架在系统架构和运行环境中有很多共通之处,本文带领读者学习基于Python网络框架开发的常用知识,及......
  • SQL Server 索引
    索引的简介:索引分为聚集索引和非聚集索引,数据库中的索引类似于一本书的目录,在一本书中通过目录可以快速找到你想要的信息,而不需要读完全书。索引主要目的是提高了SQLServ......
  • 数据库系统原理之数据库编程
    数据库编程第一节存储过程一、存储过程的基本概念存储过程是一组为了完成某项特定功能的SQL语句集,其实质上就是一段存储在数据库中的代码,它可以由声明式的SQL语句......
  • 倒排索引
     信息检索--简单易懂的倒排索引(原理+例子)_土豆同学的博客-CSDN博客_倒排索引https://blog.csdn.net/qq_43403025/article/details/114779166倒排索引与全文索引MySQ......
  • elasticsearch RESTful搜索引擎-(java jest 使用[入门])
     elasticsearch简称ESjest好吧下面我介绍下jest(第三方工具)它是ES的java客户端,基于httprestful...jest是开源的 首先看看项目的目录结构我一般习惯了用maven去管理我的......
  • mpi转以太网连接300PLC无需编程与1200PLC数据交换
    300PLC转以太网无需编程300PLC通过NetDevice与1200PLC数据交换应用概述:兴达易控MPI转以太网模块MPI-ETH-XD1.0PLUS通讯模块实现PLC无需编程通过简单的命令配置到模块,实现......