LeetCode 957. N 天后的牢房--储存循环节
- 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 天后的牢房--储存循环节相关推荐
- Leetcode 957.N天后的牢房
Leetcode 957.N天后的牢房 8间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会根据以下规则进行更改: 如果一间牢房的两个相邻的房间都被占用或都是空的,那么该 ...
- LeetCode 957. N 天后的牢房(查找循环节)
1. 题目 8 间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会根据以下规则进行更改: 如果一间牢房的两个相邻的房间都被占用或都是空的,那么该牢房就会被占用. 否则,它 ...
- Leetcode 957. N 天后的牢房
8 间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会根据以下规则进行更改: 如果一间牢房的两个相邻的房间都被占用或都是空的,那么该牢房就会被占用. 否则,它就会被空置. ...
- Leetcode 957. N 天后的牢房 循环节
题目: 8 间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会根据以下规则进行更改: 如果一间牢房的两个相邻的房间都被占用或都是空的,那么该牢房就会被占用. 否则,它就会 ...
- 【LeetCode】957. N 天后的牢房
文章目录 题目:957. N 天后的牢房 解题思路 代码 题目:957. N 天后的牢房 957. N 天后的牢房 8 间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会 ...
- 【LeetCode】957.N天后的牢房
题目描述: 8 间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会根据以下规则进行更改: 如果一间牢房的两个相邻的房间都被占用或都是空的,那么该牢房就会被占用. 否则,它 ...
- 957. N 天后的牢房
8 间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会根据以下规则进行更改: 如果一间牢房的两个相邻的房间都被占用或都是空的,那么该牢房就会被占用. 否则,它就会被空置. ...
- 957 N 天后的牢房
题目描述: 8 间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会根据以下规则进行更改: 如果一间牢房的两个相邻的房间都被占用或都是空的,那么该牢房就会被占用. 否则,它 ...
- 957.N天后的牢房
8 间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会根据以下规则进行更改: 如果一间牢房的两个相邻的房间都被占用或都是空的,那么该牢房就会被占用. 否则,它就会被空置. ...
最新文章
- 抢程序员饭碗?自动写代码的Deep TabNine真如此神奇?
- Shell中判断字符串是否为数字的6种方法分享
- 多索引表 (8)表操作
- 6 redhat 查看rtc时间_Linux EasyStack-Redhat安装Docker
- 【rbd 删除失败】rbd: error: image still has watchers
- cent 8.0 安装tomcat 9.0_nginx+tomcat会话保持方案探讨
- gwt-2.8.2下载_GWT EJB3 Maven JBoss 5.1集成教程
- 常用的HTTP响应头
- rs232 距离_串行通信接口之一RS232接口
- Hutool之类型转换类——Convert
- oracle 游标的理解
- 小爱同学,生命的意义是什么?
- shell引入sql脚本报错_Oracle11g rac集群安装执行脚本报错的解决方法
- java判断1到1000素数_JAVA作业.找出1~1000以内的质数
- intellij IDEA 设置背景颜色
- asp html5 ajax,ASP – AJAX 与 ASP | 菜鸟教程
- 微信小程序使用iconfont图标
- Java角度制向弧度制转化
- IOS清理缓存的几种方法
- Postman couldn‘t upload file
热门文章
- 机器视觉: LBP-TOP
- 使用oracle的一点心得(不错)
- 何为Referring Expression(指称表达)?
- 深入了解电容(五):不同种类电容的特性对比电容选择基本原则
- COS插件入驻Discuz!x
- 马斯克:Roadster“火箭助推器”隐藏在车牌后面
- 11G 结果集缓存限制
- c语言用什么字体输入法,写c语言代码的时候一般用什么输入法
- 【Vivado那些事】关于reset_project和reset_project -exclude ip使用辑器
- Flutter TextField自定义