Leetcode每日一题-学生出勤记录 II(Student Attendance Record II)
可以用字符串表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤、迟到、到场)。记录中只含下面三种字符:
- ‘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)相关推荐
- LeetCode——552. 学生出勤记录 II(Student Attendance Record II)[困难]——分析及代码(Java)
LeetCode--552. 学生出勤记录 II[Student Attendance Record II][困难]--分析及代码[Java] 一.题目 二.分析及代码 1. 动态规划 (1)思路 ( ...
- [Swift]LeetCode551. 学生出勤纪录 I | Student Attendance Record I
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
- 552. Student Attendance Record II(学生出勤记录 II)
552. Student Attendance Record II 博主看到这题时候第一感觉就是DP方法,但是想了一会方程式写不出来,然后开始怀疑是不是动态方程,想了一下过程感觉极其复杂.看了讨论区, ...
- 【Leetcode】552. Student Attendance Record II
题目地址: https://leetcode.com/problems/student-attendance-record-ii/ 给定一个学生nnn天的出勤记录,'A'表示缺席,'L'表示迟到,'P ...
- 【算法千题案例】每日LeetCode打卡——83.学生出勤记录 I
- 551. Student Attendance Record I 从字符串判断学生考勤
[抄题]: You are given a string representing an attendance record for a student. The record only contai ...
- leetcode: 552. 学生出勤记录 II
552. 学生出勤记录 II 来源:力扣(LeetCode) 链接: https://leetcode.cn/problems/student-attendance-record-ii/ 可以用字符串 ...
- 【Leetcode】552. 学生出勤记录 II
552. 学生出勤记录 II 题目描述 解题思路 题目描述 可以用字符串表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤.迟到.到场).记录中只含下面三种字符: 'A':Absent ...
- LeetCode 552. 学生出勤记录 II(动态规划)
文章目录 1. 题目 2. 解题 1. 题目 给定一个正整数 n,返回长度为 n 的所有可被视为可奖励的出勤记录的数量. 答案可能非常大,你只需返回结果mod 10^9 + 7的值. 学生出勤记录是只 ...
最新文章
- Stimulsoft Reports.Net基础教程(九):创建图表报表①
- Spring之AOP由浅入深
- Hadoop1.1.2 Eclipse 插件编译
- day28:检测磁盘io|自定义时段查看tomcat 日记|打印城市名字|代码上线|统计网站并发量...
- [Programming WCF Services]Chapter 1. WCF Essentials - Metadata Exchange
- 德国THI大学,招聘移动视觉和深度学习研究助理和研究员
- 【Kafka】Kafka 增量 Rebalancing: Support and Policies
- weblogic多次连接后tcp服务堵塞_网络编程——服务器篇
- 初中 计算机文化知识,计算机文化知识(Computer literacy).doc
- 初探image-set及如何适配移动端高清屏图片
- 读贾志鹏线性筛有感 (莫比乌斯函数的应用)
- 软件测试用mac还是windows,Boot Camp还是虚拟机?Mac+Win实测
- 深度优先遍历(DFS)例题
- 真的有必要读研究生吗?
- 软工课设-基于JAVA的​大学年级事务督办系统项目和源码​
- 计算机领域顶级期刊是什么,喜报 | 我所一篇论文被计算机领域顶级期刊TKDE录用...
- 写给程序员的数理科普:混沌与三体
- 暴风影音无法播放rmvb格式的视频
- Axure9 最新授权码,持续更新中
- linux chrome 网页字体,Linux 环境下怎么使 Chrome 浏览器字体更漂亮
热门文章
- 蓝牙android rssi测距,基于 RSSI 的蓝牙测距
- 靠「猜」答案获得顶会最佳论文,华人IOI金牌获得者找到复杂「鸡兔同笼」最简解法...
- Java-Appium封装实现滑动屏幕效果
- POI读取Word文件头信息
- Ubuntu系统上安装永中Office2012
- 2015年01月12日
- 如何让apache支持.htaccess 解决Internal Server Error The server …错误
- Android应用相互启动
- 如何让WIN7自动登录(不用登密码,也不用选择用户)
- 我在世界末日如何回忆平行宇宙中不平凡的2021