DeepSeek LeetCode 3729. 统计有序数组中可被 K 整除的子数组数量 JavaScript实现
📅 2026/7/27 8:56:35
👁️ 次浏览
LeetCode 3729. 统计有序数组中可被 K 整除的子数组数量核心思路本题的关键在于去重两个子数组只要数值序列相同就视为同一个。由于数组有序重复的子数组只能由连续相同的元素构成。两步策略1. 统计全部含重复用前缀和 哈希表统计所有和能被 k 整除的子数组2. 减去重复计数对每段连续相同元素减去重复统计的子数组数量---解法一直接枚举易理解ACjavascript/*** param {number[]} nums* param {number} k* return {number}*/var numGoodSubarrays function(nums, k) {// Step 1: 统计所有子数组含重复let ans 0;let prefix 0;const map new Map();map.set(0, 1);for (let x of nums) {prefix ((prefix x) % k k) % k; // 处理负数const count map.get(prefix) || 0;ans count;map.set(prefix, count 1);}// Step 2: 减去重复统计let i 0;const n nums.length;while (i n) {let j i 1;while (j n nums[j] nums[i]) j;const m j - i; // 连续相同元素个数const val nums[i];// 枚举所有可能的子数组长度for (let len 1; len m; len) {// 如果该长度组成的子数组和能被 k 整除if ((len * val) % k 0) {// 该长度有 (m - len 1) 个子数组但在 step1 中统计了 m - len 1 次// 只需要保留 1 个所以要减去 m - lenans - (m - len);}}i j;}return ans;};---解法二数学优化推荐利用 step k / gcd(k, v) 跳跃枚举避免遍历所有长度javascript/*** param {number[]} nums* param {number} k* return {number}*/var numGoodSubarrays function(nums, k) {// 特判k1 时所有子数组都满足不同子数组数量 nif (k 1) return nums.length;// Step 1: 统计所有子数组含重复let ans 0;let prefix 0;const map new Map();map.set(0, 1);for (let x of nums) {prefix ((prefix x) % k k) % k;const count map.get(prefix) || 0;ans count;map.set(prefix, count 1);}// Step 2: 减去重复统计const n nums.length;let i 0;while (i n) {let j i 1;while (j n nums[j] nums[i]) j;const m j - i; // 连续相同元素个数const val nums[i];// 数学优化只需要枚举能被 k 整除的长度// 步长 step k / gcd(k, val)const step k / gcd(k, Math.abs(val));// 从 step 开始每次增加 step直到 mfor (let len step; len m; len step) {ans - (m - len);}i j;}return ans;};// 最大公约数辅助函数function gcd(a, b) {a Math.abs(a);b Math.abs(b);while (b ! 0) {[a, b] [b, a % b];}return a;}---详细示例javascript// 示例 1console.log(numGoodSubarrays([4,5,0,-2,-3,1], 5));// 输出7// 解释所有子数组和为 5 的倍数去重后有 7 个// 示例 2console.log(numGoodSubarrays([1,1,1,1], 2));// 输出4// 解释和为偶数的不同子数组[1,1], [1,1,1,1], 长度为2的段有2个但相同只算1个// 示例 3console.log(numGoodSubarrays([0,0,0,0], 3));// 输出4// 解释[0], [0,0], [0,0,0], [0,0,0,0] 共4个不同子数组---复杂度分析解法 时间复杂度 空间复杂度解法一 O(n Σm) 最坏 O(n²) O(n)解法二 O(n Σ(m/step)) 最坏 O(n²) O(n)---关键细节1. 前缀和取模((prefix x) % k k) % k 确保余数非负2. 去重逻辑· 对于长度为 m 的连续相同段长度为 len 的子数组有 (m - len 1) 个· 步骤1统计了全部我们只需要保留 1 个所以减去 (m - len)3. 数学优化· len * val % k 0 等价于 len 是 k / gcd(k, val) 的倍数· 只用枚举 len step, 2*step, 3*step, ...4. 边界情况· val 0 时gcd(k, 0) kstep 1所有长度都要去重· k 1 时直接返回 nums.length 即可---如果还想看其他语言的实现或有任何疑问欢迎继续提问
关键词:智能表格处理、AI数据清洗、多格式导出、跨平台办公、自动化报告生成
引言:当海量Excel数据需要整理导出时,人工操作效率低、易出错,格式混乱问题频发。AI技术的介入让表格处理从“手工劳动”进化为“智能生成”࿰…
📅 2026/7/27 8:56:35
1. Linux文件系统基础解析 在Linux系统编程中,文件系统是最基础也最核心的组成部分之一。与Windows系统不同,Linux将所有设备、资源都抽象为文件进行管理,这种"一切皆文件"的设计哲学使得文件系统操作成为系统编程的必备技能。 Li…
📅 2026/7/27 8:56:35
1. 大模型推理性能优化全景认知在大模型应用落地的过程中,推理性能直接决定了用户体验和运营成本。作为AI基础设施的核心环节,推理框架的性能优化需要建立系统化的分析视角。我结合多个工业级项目实践经验,梳理出性能优化的三维分析框架&…
📅 2026/7/27 8:56:35
TestHub接口自动化测试平台架构方案 【免费下载链接】TestHub 接口自动化测试-持续集成测试 项目地址: https://gitcode.com/gh_mirrors/te/TestHub
TestHub是针对Java技术栈的接口自动化测试一体化解决方案,专为需要构建可持续集成测试体系的技术团队设计。…
📅 2026/7/28 4:10:34
1. 项目概述:一场面向所有人的创意编程盛宴又到了一年一度全球开发者社区翘首以盼的时刻。如果你对移动应用开发感兴趣,但又觉得学习Java、Swift或Kotlin这些传统编程语言门槛太高、过程太枯燥,那么“MIT App Inventor 2021年全球编程马拉松”…
📅 2026/7/28 4:10:34
1. 项目概述:从图形化到代码的桌面实践 很多朋友通过Mind的图形化编程入门,感受到了创造的乐趣。当课程进行到第七讲,标题“桌面小挂件”出现时,往往意味着一个关键的转折点:我们开始尝试将程序从Mind的舞台࿰…
📅 2026/7/28 4:10:34
1. Kimi注意力残差技术背景解析 Kimi作为国内领先的AI对话助手,其核心技术演进一直备受关注。最近推出的Attention Residuals(注意力残差)技术,本质上是对Transformer架构中注意力机制的创新改进。这项技术并非凭空而来࿰…
📅 2026/7/28 4:10:34
1. A2A协议概述A2A(Application-to-Application)协议是一种用于应用程序间通信的标准化交互规范。不同于常见的HTTP、MQTT等广为人知的协议,A2A协议更专注于企业级系统间的数据交换场景。我第一次接触这个协议是在2018年参与银行系统改造项目…
📅 2026/7/28 4:10:34
说实话,每次看到有人拿“geo2021年2月运”这种词来忽悠小白,我都想笑。那时候大家都还在疫情初期的焦虑里挣扎,谁有心思搞什么宏大的年度运势?但回过头看,那段时间恰恰是地理信息行业最魔幻也最真实的转折点。今天我不讲那些虚头巴脑的星座运势,咱们聊聊当时那个时间点,…
📅 2026/7/28 4:09:13
告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub
你是否也曾为官方Om…
📅 2026/7/28 0:00:45
做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…
📅 2026/7/28 0:00:46
2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…
📅 2026/7/28 0:00:46
更多请点击:
https://codechina.net
第一章:AI帮助理解数学概念 人工智能正以前所未有的方式重塑数学学习的路径。通过自然语言处理与符号计算的深度融合,AI不仅能解析抽象定义,还能将定理、证明和几何直觉转化为可交互、可验证的…
📅 2026/7/28 1:13:29
1. 项目背景与核心价值去年参与的一个短剧项目让我深刻体会到传统创作流程的痛点:编剧团队花了三周打磨剧本,角色设计反复修改了七版,最后成片时又因为演员档期问题不得不临时调整分镜。这种低效的创作模式在快节奏的内容行业越来越难以为继。…
📅 2026/7/28 1:13:29
remix-i18next TypeScript类型安全实践:确保翻译键与类型定义同步 【免费下载链接】remix-i18next The easiest way to translate your React Router framework mode apps 项目地址: https://gitcode.com/gh_mirrors/re/remix-i18next
在开发多语言应用时&am…
📅 2026/7/28 1:13:29
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/27 7:11:38
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/27 17:12:43
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/27 5:11:32