当前位置: 首页 > article >正文

Java | Leetcode Java题解之第552题学生出勤记录II

题目:

题解:

class Solution {
    static final int MOD = 1000000007;

    public int checkRecord(int n) {
        long[][] mat = {{1, 1, 0, 1, 0, 0},
                        {1, 0, 1, 1, 0, 0},
                        {1, 0, 0, 1, 0, 0},
                        {0, 0, 0, 1, 1, 0},
                        {0, 0, 0, 1, 0, 1},
                        {0, 0, 0, 1, 0, 0}};
        long[][] res = pow(mat, n);
        long sum = Arrays.stream(res[0]).sum();
        return (int) (sum % MOD);
    }

    public long[][] pow(long[][] mat, int n) {
        long[][] ret = {{1, 0, 0, 0, 0, 0}};
        while (n > 0) {
            if ((n & 1) == 1) {
                ret = multiply(ret, mat);
            }
            n >>= 1;
            mat = multiply(mat, mat);
        }
        return ret;
    }

    public long[][] multiply(long[][] a, long[][] b) {
        int rows = a.length, columns = b[0].length, temp = b.length;
        long[][] c = new long[rows][columns];
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < columns; j++) {
                for (int k = 0; k < temp; k++) {
                    c[i][j] += a[i][k] * b[k][j];
                    c[i][j] %= MOD;
                }
            }
        }
        return c;
    }
}

http://www.kler.cn/a/386981.html

相关文章:

  • uniapp在app模式下组件传值
  • docker配置代理解决不能拉镜像问题
  • Elastic Observability 8.16:增强的 OpenTelemetry 支持、高级日志分析和简化的入门流程
  • mac终端使用pytest执行iOS UI自动化测试方法
  • 以色列支付龙头遭DDoS攻击,各地超市加油站等POS机瘫痪
  • 应用程序部署(IIS的相关使用,sql server的相关使用)
  • 全网最最最详细的haproxy详解!!!
  • 测试实项中的偶必现难测bug--苹果支付丢单问题
  • Python爬虫实战 | 爬取网易云音乐热歌榜单
  • 【开源免费】基于SpringBoot+Vue.JS水果购物网站(JAVA毕业设计)
  • Python小白学习教程从入门到入坑------第二十九课 访问模式文件定位操作(语法进阶)
  • Docker配置及简单应用
  • 探索 C++20:C++ 的新纪元
  • 智能合约在供应链金融中的应用
  • 【EFK】Linux集群部署Elasticsearch最新版本8.x
  • 常用机器人算法原理介绍
  • Flutter UT太多导致跑覆盖率报错
  • PostgreSQL 性能优化全方位指南:深度提升数据库效率
  • Flutter鸿蒙next 中的 Drawer 导航栏
  • 如何利用动态住宅IP突破亚马逊反爬虫验证码机制
  • [NewStarCTF 2023 公开赛道]逃1
  • 10. java基础知识(下)
  • mac上如何安装指定版本的python
  • 【手撕面试题】React(高频知识点二)
  • 数据科学与大数据技术专业学生的考研方向与适合专业探索
  • 【Linux-进程间通信】了解信号量 + 共享内存 + 消息队列的应用