当前位置: 首页 > 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。

相关文章:

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的题目,但是委实是有点名不…...

Springboot(五十六)SpringBoot3集成SkyWalking

这里我们将skywalking集成到Springboot中。 关于docker部署skyWalking的相关问题,请移步《docker(二十八)docker-compose部署链路追踪SkyWalking》 一:下载java-agents 先放一下skyWalking的官网下载地址 Downloads | Apache SkyWalking 其他的版本的 APM 地址(这个我不需…...

有没有免费提取音频的软件?音频编辑软件介绍!

出于工作和生活娱乐等原因,有时候我们需要把音频单独提取出来(比如歌曲伴奏、人声清唱等、乐器独奏等)。要提取音频必须借助音频处理软件,那么有没有免费提取音频的软件呢?下面我们将为大家介绍几款免费软件&#xff0…...

Linux 中查看内存使用情况全攻略

Linux 中查看内存使用情况全攻略 在 Linux 系统运维与开发工作里,精准掌握内存使用状况对系统性能优化、故障排查起着举足轻重的作用。Linux 提供了多款实用工具来查看内存详情,下面我们就结合实际示例,深入了解这些工具的使用方法。 一、fr…...

【SQL Server】教材数据库(3)

接着教材数据库(1)的内容,完成下列查询。 1 查询订购高等教育出版社教材的学生姓名 2 查询比所有高等教育出版社的图书都贵的图书信息 3 列出每位学生姓名、订购教材书名、价格。 1、嵌套查询:use jiaocai select student.nam…...

使用 ECharts 与 Vue 构建数据可视化组件

在前端开发中,数据可视化是非常重要的一部分。ECharts 作为一个功能强大且易于使用的开源数据可视化库,被广泛应用于各种图表展示需求中。而 Vue.js 是当下流行的前端框架之一,它的数据驱动和组件化开发模式让我们能轻松地将 ECharts 集成到 …...

Yocto 项目 - 共享状态缓存 (Shared State Cache) 机制

引言 在嵌入式开发中,构建效率直接影响项目的开发进度和质量。Yocto 项目通过其核心工具 BitBake 提供了灵活而强大的构建能力。然而,OpenEmbedded 构建系统的传统设计是从头开始构建所有内容(Build from Scratch),这…...

Unity3D仿星露谷物语开发9之创建农场Scene

1、目标 绘制农场的场景。通过不同Sorting Layer控制物体的显示优先级,绘制Tilemap地图,添加Tilemap Collider碰撞器,同时添加Composite Collider碰撞器优化性能。 ps:绘制Tilemap的技巧:通过"Shift [" 可…...

STM32-笔记20-测量按键按下时间

1、按键按下的时间-思路 我们先检测下降沿信号,检测到以后,在回调函数里切换成检测上升沿信号,当两个信号都检测到的时候,这段时间就是按键按下的时间,如图所示:>N*(ARR1)CCRx的值 N是在这段时间内&…...

2024年12月30日Github流行趋势

项目名称:free-programming-books 项目地址url:https://github.com/EbookFoundation/free-programming-books项目语言:HTML历史star数:343,398今日star数:246项目维护者:vhf, eshellman, davorpa, MHM5000,…...

SAP PP bom历史导出 ALV 及XLSX 带ECN号

bom总数 104W PS超过XLSX上限 ,那就分文件 *&---------------------------------------------------------------------* *& Report ZRPT_PP_BOM_HIS_ECN *&---------------------------------------------------------------------* *& tcode:zpp0…...

使用WebRTC进行视频通信

一、WebRTC技术简介 什么是WebRTC? 是一种支持浏览器之间实时音频、视频和数据传输的开放源代码项目。它允许开发者在不需要任何第三方插件或软件的情况下实现点对点的实时通信。WebRTC已经成为现代Web应用中的关键技术,为开发者提供了强大的工具和API…...

npm ERR! ECONNRESET 解决方法

问题:npm 命令遇到的错误是 ECONNRESET,这通常与网络连接问题相关。设置代理解决问题。 一、查看当前代理设置 npm config get proxy npm config get https-proxy二、设置代理 npm config set proxy http://your-proxy-address:port npm config set h…...

【连续学习之SS-IL算法】2021年CPVR会议论文Ss-il:Separated softmax for incremental learning

1 介绍 年份:2021 期刊: 2021CPVR Ahn H, Kwak J, Lim S, et al. Ss-il: Separated softmax for incremental learning[C]//Proceedings of the IEEE/CVF International conference on computer vision. 2021: 844-853. 本文提出的SS-IL&#xff08…...

Go+chromedp实现Web UI自动化测试

1.为什么使用go进行UI自动化测试? 速度:Go速度很快,这在运行包含数百个UI测试的测试套件时是一个巨大的优势 并发性:可以利用Go的内置并发性(goroutines)来并行化测试执行 简单:Go的简约语法允许您编写可读且可维护…...

【MySQL 高级特性与性能优化】

MySQL 高级特性与性能优化 一、MySQL 存储引擎 (一)InnoDB 存储引擎 1. 特点 支持事务:InnoDB 是 MySQL 中提供完整 ACID 事务支持的存储引擎,这意味着它能够保证数据库操作在复杂的并发环境下的一致性、隔离性、原子性和持久…...

Spring Boot教程之三十九: 使用 Maven 将 Spring Boot 应用程序 Docker 化

如何使用 Maven 将 Spring Boot 应用程序 Docker 化? Docker是一个开源容器化工具,用于在隔离环境中构建、运行和管理应用程序。它方便开发人员捆绑其软件、库和配置文件。Docker 有助于将一个容器与另一个容器隔离。在本文中,为了将Spring B…...

微信小程序开发示例

微信小程序开发涉及多个方面&#xff0c;包括页面布局、交互逻辑、数据处理等。以下是一个简单的微信小程序开发示例&#xff0c;包括页面布局、样式定义、交互逻辑等方面的内容。 一、页面布局&#xff08;WXML&#xff09; <!-- index.wxml --> <view class"…...

【机器学习】概述

文章目录 1. 机器学习三步骤2. 机器学习图谱2.1 任务类型 (Task)2.2 模型选择 (Methods)2.3 学习场景 (Scenario) 1. 机器学习三步骤 定义一个模型 (Define a set of function) 选择一组合适的函数来表示模型。 评估模型好坏 (Goodness of function) 找到一个损失函数&#xf…...

音视频采集推流时间戳记录方案

音视频同步更多文章 深入理解音视频pts&#xff0c;dts&#xff0c;time_base以及时间数学公式_视频pts计算-CSDN博客 ffplay音视频同步分析_ffplay 音视频同步-CSDN博客 音视频采集打时间戳设计 实时音视频数据的采集和处理场景。具体来说: 采集阶段: 在音视频数据采集过…...

Path of Building终极指南:免费离线Build规划工具让《流放之路》角色构建变得简单

Path of Building终极指南&#xff1a;免费离线Build规划工具让《流放之路》角色构建变得简单 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding Path of Building&#xff…...

OpenClaw语音控制:Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF实现声控自动化

OpenClaw语音控制&#xff1a;Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF实现声控自动化 1. 为什么需要语音控制自动化 去年冬天的一个深夜&#xff0c;我在赶项目文档时突然冒出一个想法&#xff1a;如果能像科幻电影里那样&#xff0c;用语音指挥电脑完成重复性工作…...

BMS软件架构实战 — 深入解析Modbus协议栈与通信实现

1. Modbus协议在BMS中的核心价值 电池管理系统&#xff08;BMS&#xff09;作为新能源领域的"大脑"&#xff0c;需要实时监控数百个电芯参数。而Modbus协议就像一位高效的"翻译官"&#xff0c;将复杂的电池数据转化为标准化的通信语言。我在电动汽车BMS项目…...

C++高性能计算:优化TranslateGemma底层推理引擎

C高性能计算&#xff1a;优化TranslateGemma底层推理引擎 1. 为什么需要C重写推理引擎 当我们第一次使用TranslateGemma进行多语言翻译时&#xff0c;就被它的翻译质量惊艳到了。但作为一个需要处理大量翻译请求的开发者&#xff0c;很快就发现Python版本的性能瓶颈——内存占…...

Java开发者福音:SpringBoot集成RexUniNLU,5分钟搞定零样本意图识别

Java开发者福音&#xff1a;SpringBoot集成RexUniNLU&#xff0c;5分钟搞定零样本意图识别 1. 为什么Java开发者需要关注RexUniNLU 在开发智能客服系统时&#xff0c;我们经常遇到这样的问题&#xff1a;用户会用各种不同的表达方式询问同一件事。"快递怎么还没到"…...

一键部署GLM-4.6V-Flash-WEB:GitCode镜像真香,省去半天环境搭建时间

一键部署GLM-4.6V-Flash-WEB&#xff1a;GitCode镜像真香&#xff0c;省去半天环境搭建时间 1. 为什么选择GLM-4.6V-Flash-WEB 在多模态大模型快速发展的今天&#xff0c;开发者最头疼的不是模型性能&#xff0c;而是如何快速部署和运行。GLM-4.6V-Flash-WEB作为智谱AI最新开…...

小白友好:Python3.11镜像部署与常用库安装指南

小白友好&#xff1a;Python3.11镜像部署与常用库安装指南 1. Python3.11镜像简介 Python是一种高级、解释型、通用的编程语言&#xff0c;以其简洁易读的语法而闻名。本镜像基于Miniconda-Python3.11构建&#xff0c;是一个轻量级的Python环境管理工具&#xff0c;能让你快速…...

RMBG-2.0镜像安全加固:非root用户运行、网络隔离、资源限制配置指南

RMBG-2.2镜像安全加固&#xff1a;非root用户运行、网络隔离、资源限制配置指南 在AI应用快速部署的今天&#xff0c;我们往往更关注模型的效果和速度&#xff0c;而忽略了运行环境的安全性。想象一下&#xff0c;你精心部署了一个图像处理服务&#xff0c;结果因为一个简单的…...

Pixel Epic · Wisdom Terminal参数详解:能量值阈值设置对生成稳定性影响分析

Pixel Epic Wisdom Terminal参数详解&#xff1a;能量值阈值设置对生成稳定性影响分析 1. 像素史诗终端概述 Pixel Epic Wisdom Terminal是一款创新性的研究报告辅助工具&#xff0c;它将枯燥的科研工作转化为一场充满趣味的像素冒险。这款终端基于AgentCPM-Report大模型构…...

从CAN到UAVCAN:一文搞懂两种协议的核心差异及迁移指南

从CAN到UAVCAN&#xff1a;两种通信协议的深度解析与迁移实战 在嵌入式系统开发领域&#xff0c;CAN总线协议已经服务了汽车电子和工业控制三十余年&#xff0c;而它的进化版本UAVCAN正在无人机和机器人领域掀起一场通信革命。当我第一次在四旋翼飞行器项目中尝试将传统CAN节点…...