957.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
一.通过分析题目可以判断这是一道模拟题
规则:通过判断一间牢房两边牢房是否是相同状态进行选择,如果相同状态则占用,不相同就空的
注意:
1.通过观察实例,可以发现每间牢房判断的标准全部按上一次数组的结果,和当前正在遍历的数组没有关系
2.根据题目提示可知 首尾牢房在做完第一轮选择后,都为0
3.注意输入规模 1 <= N <= 10^9,也就是说如果死算下去,肯定会超时!也就是说应该是有规律可找的.
通过尝试观察,规律就是每14轮选择后,开始循环(我也是看评论区大佬们的评论才知道的O(∩_∩)O)
二.代码
class Solution {
public:vector<int> prisonAfterNDays(vector<int>& cells, int N) {vector<int> temp(8,0);N = N%14;for(int i=0;i<N;i++){for(int j=1;j<7;j++){if(cells[j-1]==cells[j+1])temp[j] = 1;elsetemp[j] = 0;}for(int k=1;k<7;k++){cells[k] = temp[k];}if(i==0){cells[7] = 0;cells[0] = 0;}}return cells;}
};
三.总结
1.题型总结
1).判断是模拟题后,把规则理清楚,要注意特殊情况(这里的特殊点就是首尾牢房),并且想清楚特殊情况如何实现
2).模拟题 如果输入范围过大,应该是有规律的,打印出每次模拟后的情形,尝试找出规律(比如多少次后就循环)
2.语言总结
1)vector的用法
a.头文件是<vector>
b.初始化
vector<int> temp(8,0)
这是我犯错的地方,当时没有写(8,0),与题目要求输出的vector大小不一样....题目实例输出是这样的[0,0,1,1,1,1,1,0]
957.N天后的牢房相关推荐
- 【LeetCode】957. N 天后的牢房
文章目录 题目:957. N 天后的牢房 解题思路 代码 题目:957. N 天后的牢房 957. N 天后的牢房 8 间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会 ...
- Leetcode 957.N天后的牢房
Leetcode 957.N天后的牢房 8间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会根据以下规则进行更改: 如果一间牢房的两个相邻的房间都被占用或都是空的,那么该 ...
- LeetCode 957. N 天后的牢房--储存循环节
N 天后的牢房 8 间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会根据以下规则进行更改: 如果一间牢房的两个相邻的房间都被占用或都是空的,那么该牢房就会被占用. 否则 ...
- LeetCode 957. N 天后的牢房(查找循环节)
1. 题目 8 间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会根据以下规则进行更改: 如果一间牢房的两个相邻的房间都被占用或都是空的,那么该牢房就会被占用. 否则,它 ...
- 957. N 天后的牢房
8 间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会根据以下规则进行更改: 如果一间牢房的两个相邻的房间都被占用或都是空的,那么该牢房就会被占用. 否则,它就会被空置. ...
- 957 N 天后的牢房
题目描述: 8 间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会根据以下规则进行更改: 如果一间牢房的两个相邻的房间都被占用或都是空的,那么该牢房就会被占用. 否则,它 ...
- Leetcode 957. N 天后的牢房
8 间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会根据以下规则进行更改: 如果一间牢房的两个相邻的房间都被占用或都是空的,那么该牢房就会被占用. 否则,它就会被空置. ...
- 【LeetCode】957.N天后的牢房
题目描述: 8 间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会根据以下规则进行更改: 如果一间牢房的两个相邻的房间都被占用或都是空的,那么该牢房就会被占用. 否则,它 ...
- Leetcode 957. N 天后的牢房 循环节
题目: 8 间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会根据以下规则进行更改: 如果一间牢房的两个相邻的房间都被占用或都是空的,那么该牢房就会被占用. 否则,它就会 ...
最新文章
- 值得期待的.Net Micro Framework 3.0
- 标杆徐linux云计算视频,标杆徐2018 Linux自动化运维系列④: Shell脚本自动化编程实战...
- mac系统python写文件_Mac中py文件转为.command文件,双击运行
- Python+Matplotlib+MiKTex设置标签字符串中任意字符格式
- ubuntu1204 dvd 用tweak后界面起不来 swap设置4g足够32位系统软件用
- PHP版本VC6与VC9、Thread Safe与None-Thread Safe等的区别
- Ubuntu下好的PDF阅读器介绍
- 波形分析--SPI数据
- 学习笔记︱Nvidia DIGITS网页版深度学习框架——深度学习版SPSS
- PaddleOCR手写体训练摸索
- Ubuntu 16.04安装搜狗拼音
- 1977-1998全国历年高考状元现状
- [教程] 使用魔影工厂和Nero 10制作DVD光盘
- 男生必学,与女生聊天技巧
- ValueError: y contains previously unseen labels: ‘103125‘
- 线条的样式solid dotted dashed
- 举头望明月打计算机术语,有趣的中秋节灯谜
- CAD 坐标转经纬度(Arcgis)
- 任务计划服务程序在哪里
- StringUtils.isEmpty()方法