Leetcode-1411. 给 N x 3 网格图涂色的方案数-阿里3.6笔试题

1411. 给 N x 3 网格图涂色的方案数
你有一个 n x 3 的网格图 grid ,你需要用 红,黄,绿 三种颜色之一给每一个格子上色,且确保相邻格子颜色不同(也就是有相同水平边或者垂直边的格子颜色不同)。

给你网格图的行数 n 。

请你返回给 grid 涂色的方案数。由于答案可能会非常大,请你返回答案对 10^9 + 7 取余的结果。

图片说明
解题思路
根据n=1的情况:可以将涂色情况分为ABA和ABC两种类型
其中可以推出:ABA的下一层为:BAB、BAC、BCB、CAC、CAB(三个ABA,二个ABC)
** ABC的下一层为:BAB、BCB、BCA、CAB(二个ABA,二个ABC)**
图片说明

class Solution {
    private static final int MOD=1000000007;
    public int numOfWays(int n) {
        if(n==0) return 0;
        //n=1时的情况
        long ABA=6;
        long ABC=6;
        //ABA的下一层有3个ABA,两个ABC
        //ABC的下一层有2个ABA,两个ABC
        for(int i=2;i<=n;i++){
            ABC=((ABA+ABC)*2)%MOD;
            ABA=(ABC+ABA)%MOD;
        }
        return (int)((ABC+ABA)%MOD);
    }
}
Leetcode-牛客-刷题笔记 文章被收录于专栏

本专栏主要用于分享栏主在准备java后端面试过程中的刷题笔记

全部评论

相关推荐

03-16 22:00
武汉大学 C++
幸福的小熊猫想要offer:我阿里投的 c++岗,面试官说自己是做 java 的,c++这辈子才有了
点赞 评论 收藏
分享
凉风落木楚山秋:1.教育背景,这一栏用于说明你是哪个省份的,一般四非在省内认可度是高于外省的,但是到外边了基本路边一条。然后这一栏可以写一写校内荣誉补充满一行 2.个人介绍没必要,把下面的技能内容放到这里面来,个人情况挖空等面试官来问你 3.竞赛奖项单独一栏,专门用2-3行小字写你获得了哪些奖 4.后面的模块就分为实习经历和项目经历,一个写实习做的项目,一个写学校做的项目。另外在项目中承担的角色可以标出来,时间周期也可以写一下 5.其他,你的经历和我挺像,我也大二的时候做前端,看你想找小程序还是web方向的。做小程序我感觉你这简历已经够了,比我的水货学弟强多了。要做web的话尽量再写一个react项目,不然走不远。另外,那个排课的项目看起来好水,没有亮点,可以再挖掘一下 6.名称,技术名称书写风格不统一,要么统一大驼峰,要么就用全小写+空格,保持一致好看很多
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客企业服务