DeepSeek    LeetCode 3729. 统计有序数组中可被 K 整除的子数组数量 JavaScript实现
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 即可---如果还想看其他语言的实现或有任何疑问欢迎继续提问

相关新闻

DDD CQRS架构和传统架构的优缺点比较

DDD CQRS架构和传统架构的优缺点比较

DDD CQRS架构和传统架构的优缺点比较 引言:架构演进的背景在软件开发领域,架构设计是决定系统可维护性、可扩展性和性能的关键因素。传统架构(如三层架构、MVC模式)长期占据主导地位,但随着业务复杂度的提升和分布式系…

2026/10/18 12:38:32 阅读更多 →
完整指南:如何使用开源工具BetterJoy在PC上使用Switch控制器

完整指南:如何使用开源工具BetterJoy在PC上使用Switch控制器

完整指南:如何使用开源工具BetterJoy在PC上使用Switch控制器 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitcod…

2026/10/18 12:38:36 阅读更多 →
Ubuntu下libevent安装指南与常见问题解决

Ubuntu下libevent安装指南与常见问题解决

1. 项目概述与背景 libevent是一个轻量级的开源高性能网络库,广泛应用于事件驱动的网络编程中。它封装了操作系统底层的I/O复用机制(如epoll、kqueue等),为开发者提供了统一的编程接口。在Linux-Ubuntu环境下安装libevent看似简单…

2026/10/19 16:12:03 阅读更多 →

最新新闻

MySQL锁机制与死锁排查实战:从行锁、间隙锁到索引优化

MySQL锁机制与死锁排查实战:从行锁、间隙锁到索引优化

这篇文章的选题我很早就想写了。起因是前阵子帮一个社区的朋友排查线上死锁,他跑了一个定时任务,每天凌晨批量更新订单状态,结果第二天一上班就收到一堆锁等待超时的告警。日志一拉,两条 UPDATE 语句堵在同一条索引记录上&#xf…

2026/10/20 5:55:20 阅读更多 →
SQL注入攻防实战:从攻击链拆解到防御体系搭建

SQL注入攻防实战:从攻击链拆解到防御体系搭建

我做过不少安全相关的项目,也带过团队里刚入门的安全新人,基本上每次聊到Web安全,第一个绕不开的话题就是SQL注入。这玩意诞生了二十多年,至今依然活跃在各种漏洞报告里,甚至很多所谓的新漏洞,追根溯源还是…

2026/10/20 5:55:20 阅读更多 →
LLM+Multi-Agents下的数据治理:元数据、质量、血缘与权限实战

LLM+Multi-Agents下的数据治理:元数据、质量、血缘与权限实战

1. 为什么数据分析平台里的“数据治理”会卡住整条链路1.1 从“有数可用”到“数据可信”的真实距离今年我一直在折腾一个内部的数据分析平台,框架上用了 LLM Data Multi-Agents,前端接 BI 看板,后端接数仓。刚开始跑演示时,所有…

2026/10/20 5:55:20 阅读更多 →
计算机体系结构习题答案的深度解析与工程化验证

计算机体系结构习题答案的深度解析与工程化验证

简介:本资源是《计算机体系结构》课程配套的课后习题部分参考答案,面向高校计算机专业本科生及考研复习者,聚焦系统结构、组成与实现三大核心层次的理解与解题训练。文档覆盖层次结构、虚拟机、翻译与解释、Amdahl定律、局部性原理、CPI计算、…

2026/10/20 5:55:20 阅读更多 →
归并排序力扣全攻略:模板、逆序对与链表变形

归并排序力扣全攻略:模板、逆序对与链表变形

归并排序在力扣里是个很特别的存在。你说它是基础题吧,直接让你背模板的题确实不多;但你说它是冷门算法吧,一到中等偏上的题,比如逆序对、排序链表、区间和统计,归并排序的思路几乎无处不在。很多同学刷到“排序数组”…

2026/10/20 5:55:20 阅读更多 →
PS自带字体设计商标侵权风险高,安全用字流程详解

PS自带字体设计商标侵权风险高,安全用字流程详解

前几天有个做电商的朋友发了个文件给我,说是新做的品牌字标,急着要提交商标注册。我打开一看,他用PS里的自带字体拉了四个字,又加了个描边,觉得很稳。我第一句话就问:这字体你拿到商用授权了吗?…

2026/10/20 5:54:19 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →