From 42341b9f1fed28ad030efd477d6aca1991b111bd Mon Sep 17 00:00:00 2001 From: 0xff-dev Date: Sat, 9 Aug 2025 18:41:03 +0800 Subject: [PATCH] Add solution and test-cases for problem 1411 --- .../1.png | Bin 0 -> 24764 bytes .../README.md | 30 ++++++++++++ .../Solution.go | 43 +++++++++++++++++- .../Solution_test.go | 13 +++--- 4 files changed, 77 insertions(+), 9 deletions(-) create mode 100644 leetcode/1401-1500/1411.Number-of-Ways-to-Paint-N-x-3-Grid/1.png create mode 100644 leetcode/1401-1500/1411.Number-of-Ways-to-Paint-N-x-3-Grid/README.md diff --git a/leetcode/1401-1500/1411.Number-of-Ways-to-Paint-N-x-3-Grid/1.png b/leetcode/1401-1500/1411.Number-of-Ways-to-Paint-N-x-3-Grid/1.png new file mode 100644 index 0000000000000000000000000000000000000000..33b7e2a32dd666d43b4c3d997f12daf13582c9d3 GIT binary patch literal 24764 zcmeI5Yfuwc6vx*`t7r`Zb$syffyJ3ltyLo|vMYK;O8 zf{$s3R6_=|+NYMmS4BlZ;e#=TYPCL)svQU_AO#dKBt7TuhAcRBru|~ap3FFF)|cw$fpNL7ynH<+m$8lXldv=90{qJS3fEJ@o+PqtM z$ZoZ8m!d1@2D+)|#p2=dyf{2W)&$BL+@=-{{8Ep<48F38X6p+>09pMtAuM_*Vp#M_Jm$M%>M>TE`N|Q8t)^)PnKdn zCeJlgOAH$$-YI@7XQMU4I^;MMF>9bD?XA1<8#G~sN~?=l`$=Y51Jqqo?ol%pE|2}- z1{EoLls&VR>(jI0E~T{@OVn`rXixJ`Q=uY%St>LNTI~^V+wcCS?4{6r>)16=5^7|f z)i_=wF|5)m<(GVAJ+OO2p`x-74HPj{!(BX{H>z>|eTgCLXdd4$J$F95?6;>1u9IHi z4>xZK!p`=Bic%%HPy|}7i#S%A!1ws^t$dAqw+Fi$!qhi?%gk{3GsAbs=q(|daOlaL zcxW~Bb?}wm!B??&mOtQYEE+!kaH(~j)kk)>HWh|QBVoe^73FTULJ??n3_MQ@tUq7j zJJ9L_HNwq)8$9tM4H*p?y=C;4(ZmQV3r&o)mXY~E=7-C!C5w@n+%z%L#7Gk(O^h@# z(pH-22LUSrRssptN1b!hx7OtA&w_SNK#Ln~$9@sG>;Q0qqnd4lkl&eXuOp7UfCm6| z>IoZ=jYYw;6jjnXWzv zl;Me}{8H=xr+}k4DmKY`=R-5=4TrmJ$VKdE19bG{hmi|Kq`hugf_j3kbKk2k$s2}t z#_#f7xAg8Y&H(}9YO66inhlm9d(+iI$25k)kpydzt@jlT@}{IC$j%v67l5`Lh9?o2 z`R2uUGLs$Cm5QOrh)3*YbQdV~sqc8w%)m9`_PWI739C!6koJ%~_er^!RC5TkrvN?& zcnuIf>Q^TR7SJ>_s7-10Y4xqiuqJ6m*m=xnctKD2`5DIj=c1Q@ad?3hVeyz)`?3z4+;t)b92)jrZSO+t{EOwkXfU>(H^r$~d_MSW6zAOkWJv%JuD`E~ zW4O3mFQ>em^)kAFp6L{FW)VCU@1OjnN|7`|lcBJ;g>6r6YpN^sf}z8pb*b^RXk2)o z1jL*BvkZYV%-Llc!7zVg95@<`7h$)>vIBVE!U)V02*{J?qL%=#sP)@(?;4zoE#Twc zg=qaYZ}2ssV?pGXcrQq

QNL(PqlT2q?FUfR9(Gq6>HId4H%43PXIACs1+7_{clxg-xAsq!gNLV*_rN@EH<4lD4T) zQ%D6lCW=6Ngg8B=q&~`saz-7+h_*s5g`~4?(KvAF1f3N*7@BV=9QE>?cw2ql;4OkI z&k9IMiBA;`SdOsqozTIVof9ZS%d8>pEBdPo!Y$#XH8!X<~4 zhDtzQ)uPrV^kbq%8p(wHMw!)uzr(2*#MVoz^0-qU$a{VIf=#GS1h~$+ou({lM_drQ70jN@%p`A>`G#=-m>jh0&BD5}>0Ap4Kf|j>*bk zd9-9ak*UiInvwjjKhu>*-IMC6O~Xqck>io`~cj$hh2A|HNc_F3rC zuHnme0I^wmMScgSD{W980nwnL0W2WD|C7AkD8&Cfg!y+U?9HPdpZd6WllH_E_#X$j Ni1(%`4}?a4{uiShj-3Di literal 0 HcmV?d00001 diff --git a/leetcode/1401-1500/1411.Number-of-Ways-to-Paint-N-x-3-Grid/README.md b/leetcode/1401-1500/1411.Number-of-Ways-to-Paint-N-x-3-Grid/README.md new file mode 100644 index 000000000..2a0ca6a52 --- /dev/null +++ b/leetcode/1401-1500/1411.Number-of-Ways-to-Paint-N-x-3-Grid/README.md @@ -0,0 +1,30 @@ +# [1411.Number of Ways to Paint N × 3 Grid][title] + +## Description +You have a `grid` of size `n x 3` and you want to paint each cell of the grid with exactly one of the three colors: **Red**, **Yellow**, or **Green** while making sure that no two adjacent cells have the same color (i.e., no two cells that share vertical or horizontal sides have the same color). + +Given `n` the number of rows of the `grid`, return the number of ways you can paint this grid. As the answer may grow large, the answer **must be** computed modulo `10^9 + 7`. + +**Example 1:** + +![1](./1.png) + +``` +Input: n = 1 +Output: 12 +Explanation: There are 12 possible way to paint the grid as shown. +``` + +**Example 2:** + +``` +Input: n = 5000 +Output: 30228214 +``` + +## 结语 + +如果你同我一样热爱数据结构、算法、LeetCode,可以关注我 GitHub 上的 LeetCode 题解:[awesome-golang-algorithm][me] + +[title]: https://leetcode.com/problems/number-of-ways-to-paint-n-3-grid +[me]: https://github.com/kylesliu/awesome-golang-algorithm diff --git a/leetcode/1401-1500/1411.Number-of-Ways-to-Paint-N-x-3-Grid/Solution.go b/leetcode/1401-1500/1411.Number-of-Ways-to-Paint-N-x-3-Grid/Solution.go index d115ccf5e..e207db370 100755 --- a/leetcode/1401-1500/1411.Number-of-Ways-to-Paint-N-x-3-Grid/Solution.go +++ b/leetcode/1401-1500/1411.Number-of-Ways-to-Paint-N-x-3-Grid/Solution.go @@ -1,5 +1,44 @@ package Solution -func Solution(x bool) bool { - return x +const mod = 1000000007 + +func Solution(n int) int { + rel := [12][]int{ + {1, 4, 10, 2, 5}, + {0, 3, 6, 8, 11}, + {0, 3, 6, 7}, + + {1, 7, 10, 2}, + {0, 6, 9, 8}, + {0, 6, 9, 7, 10}, + + {1, 4, 2, 5, 11}, + {3, 2, 5, 11}, + {9, 1, 4, 10}, + + {4, 5, 8, 11}, + {0, 3, 5, 8, 11}, + {1, 7, 10, 6, 9}, + } + var dfs func(int, int) int + cache := make(map[[2]int]int) + dfs = func(parent, left int) int { + if left == 0 { + return 1 + } + ans := 0 + l := len(rel[parent]) + key := [2]int{l, left} + if v, ok := cache[key]; ok { + return v + } + for _, next := range rel[parent] { + ans = (ans + dfs(next, left-1)) % mod + } + cache[key] = ans + return ans + } + a := (dfs(0, n-1) * 6) % mod + b := (dfs(2, n-1) * 6) % mod + return (a + b) % mod } diff --git a/leetcode/1401-1500/1411.Number-of-Ways-to-Paint-N-x-3-Grid/Solution_test.go b/leetcode/1401-1500/1411.Number-of-Ways-to-Paint-N-x-3-Grid/Solution_test.go index 14ff50eb4..ae9982b9b 100755 --- a/leetcode/1401-1500/1411.Number-of-Ways-to-Paint-N-x-3-Grid/Solution_test.go +++ b/leetcode/1401-1500/1411.Number-of-Ways-to-Paint-N-x-3-Grid/Solution_test.go @@ -10,12 +10,11 @@ func TestSolution(t *testing.T) { // 测试用例 cases := []struct { name string - inputs bool - expect bool + inputs int + expect int }{ - {"TestCase", true, true}, - {"TestCase", true, true}, - {"TestCase", false, false}, + {"TestCase1", 1, 12}, + {"TestCase2", 5000, 30228214}, } // 开始测试 @@ -30,10 +29,10 @@ func TestSolution(t *testing.T) { } } -// 压力测试 +// 压力测试 func BenchmarkSolution(b *testing.B) { } -// 使用案列 +// 使用案列 func ExampleSolution() { }