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

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+7

Factorials = [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]) % MOD
    Revs[i] = pow(Factorials[i], -1, mod = MOD)

def C(n, m):
    return (Factorials[n] * Revs[m] * Revs[n-m]) % MOD if n >= m else 0

class 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.kler.cn/a/458676.html

相关文章:

  • C++ 设计模式:组合模式(Composite Pattern)
  • 基于 Python Django 的花卉商城系统的研究与实现
  • UE5材质节点Camera Vector/Reflection Vector
  • 制造BOM的应用思考
  • 【竞技宝】LOL:IG新赛季分组被质疑
  • 国产数据库TiDB从入门到放弃教程
  • 【LangChain】Chapter1 - Models, Prompts and Output Parsers
  • 【开源免费】基于SpringBoot+Vue.JS网上摄影工作室系统(JAVA毕业设计)
  • PostgreSQL中FIRST_VALUE、LAST_VALUE、LAG 和 LEAD是窗口函数,允许返回在数据集的特定窗口(或分区)内访问行的相对位置
  • 软件测试之单元测试
  • 技术周总结 12.23~12.29 周日(C#异步线程及调试)
  • 网络畅通无阻:计算机网络知识点复习指南
  • Empire Lupin One靶机
  • AIGC多模态生成模型的演进:图像与视频生成算法的协同发展(附代码与详细教程)
  • .net core 的软件开发方法论
  • 【Go】:Sentinel 动态数据源配置指南
  • C++ 设计模式
  • RabbitMQ中的异步Confirm模式:提升消息可靠性的利器
  • docker oracle一些报错处理--失败记录
  • table 表格转成 excell 导出
  • windows C#-拆分类和方法
  • leetcode hot 100 全排列
  • 《HelloGitHub》第 105 期
  • Dockerfile基础指令
  • SonarQube相关的maven配置及使用
  • 【k8s】Calico网络