1. N 天后的牢房

8 间牢房排成一排,每间牢房不是有人住就是空着。

每天,无论牢房是被占用或空置,都会根据以下规则进行更改:

如果一间牢房的两个相邻的房间都被占用或都是空的,那么该牢房就会被占用。
否则,它就会被空置。

(请注意,由于监狱中的牢房排成一行,所以行中的第一个和最后一个房间无法有两个相邻的房间。)

我们用以下方式描述监狱的当前状态:如果第 i 间牢房被占用,则 cell[i]==1,否则 cell[i]==0。

根据监狱的初始状态,在 N 天后返回监狱的状况(和上述 N 种变化)。

示例 1:

输入:cells = [0,1,0,1,1,0,0,1], N = 7
输出:[0,0,1,1,0,0,0,0]
解释:
下表概述了监狱每天的状况:
Day 0: [0, 1, 0, 1, 1, 0, 0, 1]
Day 1: [0, 1, 1, 0, 0, 0, 0, 0]
Day 2: [0, 0, 0, 0, 1, 1, 1, 0]
Day 3: [0, 1, 1, 0, 0, 1, 0, 0]
Day 4: [0, 0, 0, 0, 0, 1, 0, 0]
Day 5: [0, 1, 1, 1, 0, 1, 0, 0]
Day 6: [0, 0, 1, 0, 1, 1, 0, 0]
Day 7: [0, 0, 1, 1, 0, 0, 0, 0]

示例 2:

输入:cells = [1,0,0,1,0,0,1,0], N = 1000000000
输出:[0,0,1,1,1,1,1,0]

提示:

cells.length == 8
cells[i] 的值为 0 或 1
1 <= N <= 10^9

题解:因为只有8位,考虑所有出现的情况数目不会超过2的8次方,很小的数字,所以直接暴力循环,一定会出现循环节,储存下来,然后对N取模输出答案。

AC代码

class Solution {public:string fun(string s){string t=s;t[0]=t[7]='0';for(int i=1;i<7;i++){if(s[i-1]==s[i+1])t[i]='1';else t[i]='0';}return t;}map<string,bool>vis;vector<string>q;vector<int> prisonAfterNDays(vector<int>& cells, int N) {string s="";for(int i=0;i<8;i++){s+=(cells[i]+'0');}vis.clear();q.clear();int len=0;while(true){  s=fun(s);if(vis[s])break;vis[s]=true;len++;q.push_back(s);}vector<int>res;int fin=(N-1+len)%len;for(int i=0;i<8;i++)res.push_back(q[fin][i]-'0');return res;}
};

LeetCode 957. N 天后的牢房--储存循环节相关推荐

  1. Leetcode 957.N天后的牢房

    Leetcode 957.N天后的牢房 8间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会根据以下规则进行更改: 如果一间牢房的两个相邻的房间都被占用或都是空的,那么该 ...

  2. LeetCode 957. N 天后的牢房(查找循环节)

    1. 题目 8 间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会根据以下规则进行更改: 如果一间牢房的两个相邻的房间都被占用或都是空的,那么该牢房就会被占用. 否则,它 ...

  3. Leetcode 957. N 天后的牢房

    8 间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会根据以下规则进行更改: 如果一间牢房的两个相邻的房间都被占用或都是空的,那么该牢房就会被占用. 否则,它就会被空置. ...

  4. Leetcode 957. N 天后的牢房 循环节

    题目: 8 间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会根据以下规则进行更改: 如果一间牢房的两个相邻的房间都被占用或都是空的,那么该牢房就会被占用. 否则,它就会 ...

  5. 【LeetCode】957. N 天后的牢房

    文章目录 题目:957. N 天后的牢房 解题思路 代码 题目:957. N 天后的牢房 957. N 天后的牢房 8 间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会 ...

  6. 【LeetCode】957.N天后的牢房

    题目描述: 8 间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会根据以下规则进行更改: 如果一间牢房的两个相邻的房间都被占用或都是空的,那么该牢房就会被占用. 否则,它 ...

  7. 957. N 天后的牢房

    8 间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会根据以下规则进行更改: 如果一间牢房的两个相邻的房间都被占用或都是空的,那么该牢房就会被占用. 否则,它就会被空置. ...

  8. 957 N 天后的牢房

    题目描述: 8 间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会根据以下规则进行更改: 如果一间牢房的两个相邻的房间都被占用或都是空的,那么该牢房就会被占用. 否则,它 ...

  9. 957.N天后的牢房

    8 间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会根据以下规则进行更改: 如果一间牢房的两个相邻的房间都被占用或都是空的,那么该牢房就会被占用. 否则,它就会被空置. ...

最新文章

  1. 抢程序员饭碗?自动写代码的Deep TabNine真如此神奇?
  2. Shell中判断字符串是否为数字的6种方法分享
  3. 多索引表 (8)表操作
  4. 6 redhat 查看rtc时间_Linux EasyStack-Redhat安装Docker
  5. 【rbd 删除失败】rbd: error: image still has watchers
  6. cent 8.0 安装tomcat 9.0_nginx+tomcat会话保持方案探讨
  7. gwt-2.8.2下载_GWT EJB3 Maven JBoss 5.1集成教程
  8. 常用的HTTP响应头
  9. rs232 距离_串行通信接口之一RS232接口
  10. Hutool之类型转换类——Convert
  11. oracle 游标的理解
  12. 小爱同学,生命的意义是什么?
  13. shell引入sql脚本报错_Oracle11g rac集群安装执行脚本报错的解决方法
  14. java判断1到1000素数_JAVA作业.找出1~1000以内的质数
  15. intellij IDEA 设置背景颜色
  16. asp html5 ajax,ASP – AJAX 与 ASP | 菜鸟教程
  17. 微信小程序使用iconfont图标
  18. Java角度制向弧度制转化
  19. IOS清理缓存的几种方法
  20. Postman couldn‘t upload file

热门文章

  1. 机器视觉: LBP-TOP
  2. 使用oracle的一点心得(不错)
  3. 何为Referring Expression(指称表达)?
  4. 深入了解电容(五):不同种类电容的特性对比电容选择基本原则
  5. COS插件入驻Discuz!x
  6. 马斯克:Roadster“火箭助推器”隐藏在车牌后面
  7. 11G 结果集缓存限制
  8. c语言用什么字体输入法,写c语言代码的时候一般用什么输入法
  9. 【Vivado那些事】关于reset_project和reset_project -exclude ip使用辑器
  10. Flutter TextField自定义