LC 957. Prison Cells After N Days
There are 8 prison cells in a row, and each cell is either occupied or vacant.
Each day, whether the cell is occupied or vacant changes according to the following rules:
- If a cell has two adjacent neighbors that are both occupied or both vacant, then the cell becomes occupied.
- Otherwise, it becomes vacant.
(Note that because the prison is a row, the first and the last cells in the row can't have two adjacent neighbors.)
We describe the current state of the prison in the following way: cells[i] == 1 if the i-th cell is occupied, else cells[i] == 0.
Given the initial state of the prison, return the state of the prison after N days (and N such changes described above.)
example
Input: cells = [0,1,0,1,1,0,0,1], N = 7
Output: [0,0,1,1,0,0,0,0]
Explanation:
The following table summarizes the state of the prison on each day:
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]
题目要求:8个(0,1)一排,两边相同中间变1,两边不同中间变0。问N次后的数组样子。
思路1:使用字典记录每一个过程和遍历时的N,如果有重复直接取模。减少运算量。
  class Solution {
  public:
  vector<int> prisonAfterNDays(vector<int>& cells, int N) {
      unordered_map<string, int> map;
      string firstcell = "";
      for (int i = ; i<cells.size(); i++) {
          firstcell += to_string(cells[i]);
      }
      while (N != ) {
         if (map.count(firstcell))
             N %= map[firstcell] - N;
         if(N == ) break;
         string nextstr = "";
         for (int i = ; i < ; i++) {
             nextstr += firstcell[i - ] == firstcell[i + ] ? "" : "";
         }
         nextstr = "" + nextstr + "";
         //cout << nextstr << endl;
         map[firstcell] = N;
         firstcell = nextstr;
         N--;
     }
     vector<int> ret;
     for (int i = ; i<firstcell.size(); i++) {
         if (firstcell[i] == '') ret.push_back();
         else ret.push_back();
     }
     return ret;
 }
 };
LC 957. Prison Cells After N Days的更多相关文章
- 【leetcode】957. Prison Cells After N Days
		题目如下: There are 8 prison cells in a row, and each cell is either occupied or vacant. Each day, wheth ... 
- 【LeetCode】957. Prison Cells After N Days 解题报告(Python)
		作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 周期是14 日期 题目地址:https://leet ... 
- [Swift]LeetCode957. N天后的牢房 | Prison Cells After N Days
		There are 8 prison cells in a row, and each cell is either occupied or vacant. Each day, whether the ... 
- 115th LeetCode Weekly Contest Prison Cells After N Days
		There are 8 prison cells in a row, and each cell is either occupied or vacant. Each day, whether the ... 
- weekly contest 115
		958. Check Completeness of a Binary Tree Given a binary tree, determine if it is a complete binary t ... 
- 【Leetcode周赛】从contest-111开始。(一般是10个contest写一篇文章)
		Contest 111 (题号941-944)(2019年1月19日,补充题解,主要是943题) 链接:https://leetcode.com/contest/weekly-contest-111 ... 
- Swift LeetCode 目录 | Catalog
		请点击页面左上角 -> Fork me on Github 或直接访问本项目Github地址:LeetCode Solution by Swift 说明:题目中含有$符号则为付费题目. 如 ... 
- Google Code Jam 2009, Round 1C C. Bribe the Prisoners (记忆化dp)
		Problem In a kingdom there are prison cells (numbered 1 to P) built to form a straight line segment. ... 
- English trip  V1 - 1.How Do You Feel Now?  Teacher:Lamb Key:形容词(Adjectives)
		In this lesson you will learn to describe people, things, and feelings.在本课中,您将学习如何描述人,事和感受. STARTER ... 
随机推荐
- 【Log4J】
			学习mybatis中用到了Log4J 在此记录下 引入 引入Maven配置 <!-- https://mvnrepository.com/artifact/log4j/log4j --> ... 
- 第二章、drf框架 - 请求模块 | 渲染模块 解析模块 | 异常模块 | 响应模块 (详细版)
			目录 drf框架 - 请求模块 | 渲染模块 解析模块 | 异常模块 | 响应模块 Postman接口工具 drf框架 注册rest_framework drf框架风格 drf请求生命周期 请求模块 ... 
- 网络编程实现简单的ssh
			客户端:客户端实例 ---> 建立连接 ----> 发送内容 ---> 接受内容. import socket client = socket.socket() client.c ... 
- 【异常】ERROR main:com.cloudera.enterprise.dbutil.SqlFileRunner: Exception while executing ddl scripts. com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'ROLES' already exists
			1 详细异常 2019-10-11 10:33:55,865 INFO main:com.cloudera.server.cmf.Main: ============================= ... 
- ListSetAndMap
			package com.collection.test; import java.util.ArrayList; import java.util.HashMap; import java.util. ... 
- C 动态内存申请
			例子: int *p=0; int number=0; scanf("%d",&number); p = (int*)malloc(number*sizeof(int)); 
- 2018 牛客网暑期ACM多校训练营(第一场) E	Removal (DP)
			Removal 链接:https://ac.nowcoder.com/acm/contest/139/E来源:牛客网 题目描述 Bobo has a sequence of integers s1, ... 
- 通过自动回复机器人学Mybatis---基础版
			第1章 案例简介 介绍要实现的案例情况,后面会通过这个案例来学习 Mybatis 第2章 实战第一部----黎明前的黑暗 在没有 Mybatis 的情况下,使用 Jsp + Servlet + Jdb ... 
- Spark任务调度初识
			前置知识 spark任务模型 job:action的调用,触发了DAG的提交和整个job的执行. stage:stage是由是否shuffle来划分,如果发生shuffle,则分为2个stage. t ... 
- osm2pgsql
			osm2pgsql -d gis --create --slim --drop --flat-nodes '/data/nodes.bin' -G --hstore --tag-transform-s ... 
