552. Student Attendance Record II
https://leetcode.com/problems/redundant-connection-ii/description/
/*
* @lc app=leetcode id=552 lang=cpp
*
* [552] Student Attendance Record II
*/
class Solution {
public:
int checkRecord(int n) {
const int M = 1000000007;
// 截止到i,分别以A, L, P结尾的状态。
vector<long> A0L0(n + 1), A0L1(n + 1), A0L2(n + 1), A1L0(n + 1), A1L1(n + 1), A1L2(n + 1);
A0L0[0] = 1;
for (int i = 1; i <= n; ++i) {
// 放P
A0L0[i] = (A0L0[i - 1] + A0L1[i - 1] + A0L2[i - 1]) % M;
// 放L
A0L1[i] = A0L0[i - 1];
// 放L
A0L2[i] = A0L1[i - 1];
// 放A或P
A1L0[i] = (A0L0[i - 1] + A0L1[i - 1] + A0L2[i - 1] + A1L0[i - 1] + A1L1[i - 1] + A1L2[i - 1]) % M;
// 放L
A1L1[i] = A1L0[i - 1];
// 放L
A1L2[i] = A1L1[i - 1];
}
return (A0L0[n] + A0L1[n] + A0L2[n] + A1L0[n] + A1L1[n] + A1L2[n]) % M;
}
};
Last updated