Leetcode 957.N天后的牢房
8间牢房排成一排,每间牢房不是有人住就是空着。
每天,无论牢房是被占用或空置,都会根据以下规则进行更改:
如果一间牢房的两个相邻的房间都被占用或都是空的,那么该牢房就会被占用。
否则,它就会被空置。
(请注意,由于监狱中的牢房排成一行,所以行中的第一个和最后一个房间无法有两个相邻的房间。)
我们用以下方式描述监狱的当前状态:如果第 i 间牢房被占用,则 cell[i]==1,否则 cell[i]==0。
根据监狱的初始状态,在 N 天后返回监狱的状况(和上述 N 种变化)。
输入:
cells = [1,0,0,1,0,0,1,0], N = 1000000000
输出:
[0,0,1,1,1,1,1,0]
思路
总共有八间牢房,只有空或非空两种状态,共2^8 = 256状态
N则有1e9,显然存在相同的状态,那么只要找到循环节就可以了。
题目链接
class Solution
{
public:int hashTable1[300]; //记录这个状态是否出现过int hashTable2[300]; //记录这个状态出现在第几天vector<int> prisonAfterNDays(vector<int>& cells, int N){int id = 0;for(int i=0; i<cells.size(); i++){if(cells[i])id += (1<<i);}hashTable1[id]=1;hashTable2[id]=0;int i=0,flag = 0;while(N--){vector<int>temp;id = 0;for(int j=0; j<cells.size(); j++){if(j==0||j==cells.size()-1)temp.push_back(0);else{if(cells[j-1]==cells[j+1]){temp.push_back(1);id += (1<<j);}elsetemp.push_back(0);}}cells = temp;if(flag)continue;if(flag==0&&hashTable1[id]) ///找到出现过的点{flag = 1;int repetend = i+1 - hashTable2[id];N%=repetend; ///去除循环}hashTable1[id]=1;hashTable2[id]=i+1;i++;}return cells;}
};
转载于:https://www.cnblogs.com/xcantaloupe/p/10152287.html
Leetcode 957.N天后的牢房相关推荐
- LeetCode 957. N 天后的牢房--储存循环节
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 间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会根据以下规则进行更改: 如果一间牢房的两个相邻的房间都被占用或都是空的,那么该牢房就会被占用. 否则,它就会被空置. ...
最新文章
- leetCode第五题-求字符串最长回文字符串
- 会员制的cd出租销售java_模式|酒店改造养老会员制盈利模式及交易结构深度探讨...
- 使用anconada 的conda更换环境
- 并发事务正确性的准则 可串行化_从0到1理解数据库事务(上):并发问题与隔离级别...
- tomcat是否有必要配置环境变量(摘)
- python 中的面向对象
- react学习预备知识_在10分钟内学习React基础知识
- 51NOD 1088 最长回文子串1089 最长回文子串 V2(Manacher算法)
- 模板设计模式_C常用设计模式——模板方法模式
- ExtJs - grid 合并单元格 跨行跨列
- SQL 常用语句大全
- Python开发【第十九篇】:Python操作MySQL
- Jmeter安装及简单使用
- php红包互助源码_完整的微信红包接口API实现(php版)
- 新颖的自我介绍_有关最新颖的自我介绍
- Opencv C++成长之路(七):RGB转换灰度图像
- java web 图片上传
- java读取excel大文件
- Python 实现远程服务器(ssh)批量执行命令
- 手机访问电脑文件_彻底解决手机-电脑互传大文件的难题 电脑-手机快捷互联互通...
热门文章
- iPhone屏幕投射到Mac的解决方案
- [工具] alx 和 jad 文件生成器 BerryCreate 2.0 分享
- VMware虚拟机配置
- 怎么实现将word中的公式导入(或粘贴)到网页编辑中
- 传奇客户度文件代码完全解析
- Android崩溃日志框架,崩溃日志上传框架 LogReport
- ac990网络版会计核算软件(带狗)
- 五子棋规则之先后手的确定方法
- 通过“控制面板”无法卸载 Office 2003、Office 2007 或 Office 2010 套件时如何才能将其卸载?
- 华为HCIA备考(数通) 易错题整理 PART1