可以用字符串表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤、迟到、到场)。记录中只含下面三种字符:

  • ‘A’:Absent,缺勤
  • ‘L’:Late,迟到
  • ‘P’:Present,到场

如果学生能够 同时 满足下面两个条件,则可以获得出勤奖励:

按 总出勤 计,学生缺勤(‘A’)严格 少于两天。
学生 不会 存在 连续 3 天或 连续 3 天以上的迟到(‘L’)记录。
给你一个整数 n ,表示出勤记录的长度(次数)。请你返回记录长度为 n 时,可能获得出勤奖励的记录情况 数量 。答案可能很大,所以返回对 109 + 7 取余 的结果。

示例 1:

输入:n = 2
输出:8
解释:
有 8 种长度为 2 的记录将被视为可奖励:
"PP" , "AP", "PA", "LP", "PL", "AL", "LA", "LL"
只有"AA"不会被视为可奖励,因为缺勤次数为 2 次(需要少于 2 次)。

示例 2:

输入:n = 1
输出:3
示例 3:输入:n = 10101
输出:183236316

提示:

  • 1 <= n <= 105

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/student-attendance-record-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解:

class Solution {public int checkRecord(int n) {final int MOD = 1000000007;int[][] dp = new int[2][3]; dp[0][0] = 1;for (int i = 1; i <= n; i++) {int[][] dpNew = new int[2][3];for (int j = 0; j <= 1; j++) {for (int k = 0; k <= 2; k++) {dpNew[j][0] = (dpNew[j][0] + dp[j][k]) % MOD;}}for (int k = 0; k <= 2; k++) {dpNew[1][0] = (dpNew[1][0] + dp[0][k]) % MOD;}for (int j = 0; j <= 1; j++) {for (int k = 1; k <= 2; k++) {dpNew[j][k] = (dpNew[j][k] + dp[j][k - 1]) % MOD;}}dp = dpNew;}int sum = 0;for (int j = 0; j <= 1; j++) {for (int k = 0; k <= 2; k++) {sum = (sum + dp[j][k]) % MOD;}}return sum;}
}

Leetcode每日一题-学生出勤记录 II(Student Attendance Record II)相关推荐

  1. LeetCode——552. 学生出勤记录 II(Student Attendance Record II)[困难]——分析及代码(Java)

    LeetCode--552. 学生出勤记录 II[Student Attendance Record II][困难]--分析及代码[Java] 一.题目 二.分析及代码 1. 动态规划 (1)思路 ( ...

  2. [Swift]LeetCode551. 学生出勤纪录 I | Student Attendance Record I

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  3. 552. Student Attendance Record II(学生出勤记录 II)

    552. Student Attendance Record II 博主看到这题时候第一感觉就是DP方法,但是想了一会方程式写不出来,然后开始怀疑是不是动态方程,想了一下过程感觉极其复杂.看了讨论区, ...

  4. 【Leetcode】552. Student Attendance Record II

    题目地址: https://leetcode.com/problems/student-attendance-record-ii/ 给定一个学生nnn天的出勤记录,'A'表示缺席,'L'表示迟到,'P ...

  5. 【算法千题案例】每日LeetCode打卡——83.学生出勤记录 I

  6. 551. Student Attendance Record I 从字符串判断学生考勤

    [抄题]: You are given a string representing an attendance record for a student. The record only contai ...

  7. leetcode: 552. 学生出勤记录 II

    552. 学生出勤记录 II 来源:力扣(LeetCode) 链接: https://leetcode.cn/problems/student-attendance-record-ii/ 可以用字符串 ...

  8. 【Leetcode】552. 学生出勤记录 II

    552. 学生出勤记录 II 题目描述 解题思路 题目描述 可以用字符串表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤.迟到.到场).记录中只含下面三种字符: 'A':Absent ...

  9. LeetCode 552. 学生出勤记录 II(动态规划)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个正整数 n,返回长度为 n 的所有可被视为可奖励的出勤记录的数量. 答案可能非常大,你只需返回结果mod 10^9 + 7的值. 学生出勤记录是只 ...

最新文章

  1. Stimulsoft Reports.Net基础教程(九):创建图表报表①
  2. Spring之AOP由浅入深
  3. Hadoop1.1.2 Eclipse 插件编译
  4. day28:检测磁盘io|自定义时段查看tomcat 日记|打印城市名字|代码上线|统计网站并发量...
  5. [Programming WCF Services]Chapter 1. WCF Essentials - Metadata Exchange
  6. 德国THI大学,招聘移动视觉和深度学习研究助理和研究员
  7. 【Kafka】Kafka 增量 Rebalancing: Support and Policies
  8. weblogic多次连接后tcp服务堵塞_网络编程——服务器篇
  9. 初中 计算机文化知识,计算机文化知识(Computer literacy).doc
  10. 初探image-set及如何适配移动端高清屏图片
  11. 读贾志鹏线性筛有感 (莫比乌斯函数的应用)
  12. 软件测试用mac还是windows,Boot Camp还是虚拟机?Mac+Win实测
  13. 深度优先遍历(DFS)例题
  14. 真的有必要读研究生吗?
  15. 软工课设-基于JAVA的​大学年级事务督办系统项目和源码​
  16. 计算机领域顶级期刊是什么,喜报 | 我所一篇论文被计算机领域顶级期刊TKDE录用...
  17. 写给程序员的数理科普:混沌与三体
  18. 暴风影音无法播放rmvb格式的视频
  19. Axure9 最新授权码,持续更新中
  20. linux chrome 网页字体,Linux 环境下怎么使 Chrome 浏览器字体更漂亮

热门文章

  1. 蓝牙android rssi测距,基于 RSSI 的蓝牙测距
  2. 靠「猜」答案获得顶会最佳论文,华人IOI金牌获得者找到复杂「鸡兔同笼」最简解法...
  3. Java-Appium封装实现滑动屏幕效果
  4. POI读取Word文件头信息
  5. Ubuntu系统上安装永中Office2012
  6. 2015年01月12日
  7. 如何让apache支持.htaccess 解决Internal Server Error The server …错误
  8. Android应用相互启动
  9. 如何让WIN7自动登录(不用登密码,也不用选择用户)
  10. 我在世界末日如何回忆平行宇宙中不平凡的2021