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

Leetcode 3405. Count the Number of Arrays with K Matching Adjacent Elements

  • Leetcode 3405. Count the Number of Arrays with K Matching Adjacent Elements
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3405. Count the Number of Arrays with K Matching Adjacent Elements

1. 解题思路

这一题虽然是一道hard的题目,但是委实是有点名不副实了,任何一个稍微学过一些高中排列组合相关内容的同学事实上应该都对这个题目比较熟悉。

这个题目的本质事实上就是构造一个长度为 n n n的数组,然后每一个元素有 m m m种选择,且有且仅有 k k k个元素与其前一个元素相同。

显然,我们先从数组当中选定 k k k个位置,令其与其前一元素相同,则其可能的选法必然就是 C n − 1 k C_{n-1}^{k} Cn1k,即除了第一个位置之外,剩下的 n − 1 n-1 n1个位置均可作为侯选位置。剩下的,我们就是要够长一个长度为 n − k n-k nk的数组,使其两两元素不同,则其可能的构造方法就可以快速算出为 m ⋅ ( m − 1 ) n − k − 1 m \cdot (m-1)^{n-k-1} m(m1)nk1

两者相乘即为最终的答案:

N = m ⋅ ( m − 1 ) n − k − 1 ⋅ C n − 1 k N = m \cdot (m-1)^{n-k-1} \cdot C_{n-1}^{k} N=m(m1)nk1Cn1k

剩下的我们只需要用python实现一下就行了……

2. 代码实现

给出python代码实现如下:

MOD = 10**9+7Factorials = [1 for _ in range(10**5+1)]
Revs = [1 for _ in range(10**5+1)]
for i in range(2, 10**5+1):Factorials[i] = (i * Factorials[i-1]) % MODRevs[i] = pow(Factorials[i], -1, mod = MOD)def C(n, m):return (Factorials[n] * Revs[m] * Revs[n-m]) % MOD if n >= m else 0class Solution:def countGoodArrays(self, n: int, m: int, k: int) -> int:return (m * pow(m-1, n-k-1, mod=MOD) * C(n-1, k)) % MOD

提交代码评测得到:耗时0ms,占用内存25.5MB。

http://www.lryc.cn/news/512675.html

相关文章:

  • Springboot(五十六)SpringBoot3集成SkyWalking
  • 有没有免费提取音频的软件?音频编辑软件介绍!
  • Linux 中查看内存使用情况全攻略
  • 【SQL Server】教材数据库(3)
  • 使用 ECharts 与 Vue 构建数据可视化组件
  • Yocto 项目 - 共享状态缓存 (Shared State Cache) 机制
  • Unity3D仿星露谷物语开发9之创建农场Scene
  • STM32-笔记20-测量按键按下时间
  • 2024年12月30日Github流行趋势
  • SAP PP bom历史导出 ALV 及XLSX 带ECN号
  • 使用WebRTC进行视频通信
  • npm ERR! ECONNRESET 解决方法
  • 【连续学习之SS-IL算法】2021年CPVR会议论文Ss-il:Separated softmax for incremental learning
  • Go+chromedp实现Web UI自动化测试
  • 【MySQL 高级特性与性能优化】
  • Spring Boot教程之三十九: 使用 Maven 将 Spring Boot 应用程序 Docker 化
  • 微信小程序开发示例
  • 【机器学习】概述
  • 音视频采集推流时间戳记录方案
  • 【Linux】:线程安全 + 死锁问题
  • 【深度学习】时间序列表示方法
  • 1.微服务灰度发布落地实践(方案设计)
  • 【UE5 C++课程系列笔记】15——Assert的基本使用
  • kubernetes Gateway API-1-部署和基础配置
  • likeAdmin架构部署(踩坑后的部署流程
  • 【一款超好用的开源笔记Logseq本地Docker部署与远程使用指南】
  • 浅谈torch.utils.data.TensorDataset和torch.utils.data.DataLoader
  • gesp(C++二级)(16)洛谷:B4037:[GESP202409 二级] 小杨的 N 字矩阵
  • FFmpeg:详细安装教程与环境配置指南
  • 《特征工程:自动化浪潮下的坚守与变革》