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]

提示:

  1. cells.length == 8
  2. cells[i] 的值为 0 或 1
  3. 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天后的牢房相关推荐

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

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

  2. Leetcode 957.N天后的牢房

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

  3. LeetCode 957. N 天后的牢房--储存循环节

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

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

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

  5. 957. N 天后的牢房

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

  6. 957 N 天后的牢房

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

  7. Leetcode 957. N 天后的牢房

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

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

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

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

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

最新文章

  1. 值得期待的.Net Micro Framework 3.0
  2. 标杆徐linux云计算视频,标杆徐2018 Linux自动化运维系列④: Shell脚本自动化编程实战...
  3. mac系统python写文件_Mac中py文件转为.command文件,双击运行
  4. Python+Matplotlib+MiKTex设置标签字符串中任意字符格式
  5. ubuntu1204 dvd 用tweak后界面起不来 swap设置4g足够32位系统软件用
  6. PHP版本VC6与VC9、Thread Safe与None-Thread Safe等的区别
  7. Ubuntu下好的PDF阅读器介绍
  8. 波形分析--SPI数据
  9. 学习笔记︱Nvidia DIGITS网页版深度学习框架——深度学习版SPSS
  10. PaddleOCR手写体训练摸索
  11. Ubuntu 16.04安装搜狗拼音
  12. 1977-1998全国历年高考状元现状
  13. [教程] 使用魔影工厂和Nero 10制作DVD光盘
  14. 男生必学,与女生聊天技巧
  15. ValueError: y contains previously unseen labels: ‘103125‘
  16. 线条的样式solid dotted dashed
  17. 举头望明月打计算机术语,有趣的中秋节灯谜
  18. CAD 坐标转经纬度(Arcgis)
  19. 任务计划服务程序在哪里
  20. StringUtils.isEmpty()方法

热门文章

  1. 前端小作业~精灵图拼名字
  2. Steve Jobs 2005年在Stanford毕业典礼上的演讲
  3. 伸缩式推进器行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  4. unity实战之TextMeshPro实现聊天图文混排
  5. 零基础如何学好python?
  6. 图片加载神器之Fresco,基于各种使用场景的讲解
  7. TSN时间敏感网络|学习笔记-看这一篇就够了
  8. 牛客洋灰三角【矩阵快速幂】
  9. 计算机论文查重修改吗,程序符号换了知网查重能过吗
  10. 父游标与子游标--------摘自vage的解释