dengxinyi 6 vuotta sitten
vanhempi
commit
b1e34449f5
1 muutettua tiedostoa jossa 29 lisäystä ja 0 poistoa
  1. 29 0
      hard/552.student-attendance-record-ii.go

+ 29 - 0
hard/552.student-attendance-record-ii.go

@@ -0,0 +1,29 @@
+const MOD int = 1000000007
+
+func checkRecord(n int) int {
+	// A, L, P
+	var dp = [2][3]int{{1, 1, 0}, {1, 0, 0}}
+	for i := 1; i < n; i++ {
+		var nxt [2][3]int
+		for A := 0; A <= 1; A++ {
+			for L := 0; L <= 2; L++ {
+				nxt[A][0] += dp[A][L] // Append P
+				if L > 0 {
+					nxt[A][L] += dp[A][L-1] // Append L
+				}
+				if A > 0 {
+					nxt[A][0] += dp[A-1][L] // Append A
+				}
+				nxt[A][L] %= MOD
+			}
+		}
+		dp = nxt
+	}
+	sum := 0
+	for i := range dp {
+		for _, v := range dp[i] {
+			sum = (sum + v) % MOD
+		}
+	}
+	return sum
+}