Kimi LeetCode 3525. 求出数组的 X 值 II Go实现

发布时间:2026/10/21 16:32:09

Kimi    LeetCode 3525. 求出数组的 X 值 II Go实现 以下是 LeetCode 3525 求出数组的 X 值 II 的 Go 实现核心思路是线段树维护区间前缀积的模分布。思路概述- 对于每个查询先单点修改 nums[index]再移除前缀保留 [start..]最后可以删除任意后缀即保留任意非空前缀。- 因此每个查询的答案等价于在子数组 nums[start..] 的所有非空前缀中乘积模 k 等于 x 的个数。- 由于 k ≤ 5线段树每个节点只需维护- prod区间整体乘积模 k- cntcnt[m] 表示该区间内有多少个非空前缀的乘积模 k 等于 m- 合并两个子区间时右子树的前缀需要乘上左子树的总积再模 k。复杂度- 时间O((n q) · k² · log n)由于 k ≤ 5实际约为 O((n q) log n)- 空间O(n)完整代码gotype Node struct {prod int // 区间乘积 % kcnt [5]int // cnt[m] 非空前缀中乘积 % k m 的个数}type SegTree struct {k inttree []Noden int}func NewSegTree(nums []int, k int) *SegTree {n : len(nums)seg : SegTree{k: k,tree: make([]Node, n*4),n: n,}seg.build(1, 0, n-1, nums)return seg}func (s *SegTree) build(node, l, r int, nums []int) {if l r {v : nums[l] % s.ks.tree[node].prod vs.tree[node].cnt [5]int{}s.tree[node].cnt[v] 1return}mid : (l r) 1s.build(node1, l, mid, nums)s.build(node1|1, mid1, r, nums)s.pull(node)}func (s *SegTree) merge(left, right Node) Node {var res Noderes.prod (left.prod * right.prod) % s.k// 左区间的前缀直接保留for i : 0; i s.k; i {res.cnt[i] left.cnt[i]}// 右区间的前缀需要乘上左区间的总积for i : 0; i s.k; i {if right.cnt[i] ! 0 {newMod : (left.prod * i) % s.kres.cnt[newMod] right.cnt[i]}}return res}func (s *SegTree) pull(node int) {s.tree[node] s.merge(s.tree[node1], s.tree[node1|1])}func (s *SegTree) update(node, l, r, idx, val int) {if l r {v : val % s.ks.tree[node].prod vs.tree[node].cnt [5]int{}s.tree[node].cnt[v] 1return}mid : (l r) 1if idx mid {s.update(node1, l, mid, idx, val)} else {s.update(node1|1, mid1, r, idx, val)}s.pull(node)}func (s *SegTree) query(node, l, r, ql, qr int) Node {if ql l r qr {return s.tree[node]}mid : (l r) 1if qr mid {return s.query(node1, l, mid, ql, qr)}if ql mid {return s.query(node1|1, mid1, r, ql, qr)}left : s.query(node1, l, mid, ql, qr)right : s.query(node1|1, mid1, r, ql, qr)return s.merge(left, right)}func resultArray(nums []int, k int, queries [][]int) []int {n : len(nums)for i : range nums {nums[i] % k}seg : NewSegTree(nums, k)ans : make([]int, 0, len(queries))for _, q : range queries {idx, val, start, x : q[0], q[1]%k, q[2], q[3]seg.update(1, 0, n-1, idx, val)res : seg.query(1, 0, n-1, start, n-1)ans append(ans, res.cnt[x])}return ans}关键点说明1. cnt 的含义每个节点维护的是从该区间左端点开始的所有非空前缀的模分布。这样查询任意子区间时递归返回的子节点天然满足从左端点开始的要求合并时只需把右子树的前缀乘上左子树的总积即可。2. k ≤ 5 的利用cnt 数组固定开 5实际只用前 k 个合并时的双重循环最多 25 次运算常数极小。3. 单点更新修改叶子后自底向上 pull保持每个节点的 prod 和 cnt 正确。4. 预处理取模建树前和更新时都把数值对 k 取模避免大数运算。
延伸阅读

更多相关文章

2026/10/20 14:17:46

python3连接达梦8

一、安装python3.81.1、安装必要的编译依赖 yum groupinstall "Development Tools" -y yum install openssl-devel bzip2-devel libffi-devel zlib-devel readline-devel sqlite-devel tk-devel gcc make -y1.2、下载并解压python3.8 cd /usr/local/src sudo wget ht…

2026/10/21 14:14:09

Unity屏幕雨滴特效深度解析:从原理到性能优化实战

1. 项目概述:从屏幕雨滴到沉浸式天气系统最近在做一个需要强氛围感的项目,场景里要是没点风雨,总觉得少了点灵魂。市面上找了一圈雨雪特效的插件,要么效果太“塑料”,要么性能开销大得吓人。后来把目光投向了社区里口碑…

2026/10/21 4:02:13

Python运算符:小白只需用这一篇,让你从入门到“殴打”面试官

📖 前言python作为一门简洁而强大的编程语言,其运算符和条件判断是编写任何程序的基础。无论你是刚入门的新手,还是想巩固基础的老手,掌握这些知识点都至关重要。本文将系统讲解python中的五大类运算符,并配套13道实战…

2026/10/22 8:38:00

从CC Switch到Magpie:Claude Code配置管理迁移实战

几个月前我写过一篇关于 Claude Code 日常工作流的分享,那时候我还在用 CC Switch 管理多套配置。半年下来,配置从一个文件膨胀到一整个目录,不同项目的模型偏好、MCP 服务、工具权限全都混在一起。CC Switch 在最开始确实帮我解决了“来回改…

2026/10/22 8:38:00

Agentic AI与提示工程实战:构建智慧消防智能救援系统

凌晨两点,指挥中心大屏的告警音骤然响起,某物流仓库的烟感探测器触发联动。值班员需要在几十秒内判断火势规模、确定最近的可用消防水源、规划出警路线,同时还要协调物业确认内部是否有人被困——信息分散在不同的系统里,人脑切换…

2026/10/22 8:38:00

HDFS分布式文件系统入门:核心架构、读写流程与集群搭建实战

1. 为什么我要从HDFS开始聊大数据 很多人第一次接触大数据,脑子里冒出来的第一个问题往往是:这东西到底怎么存?毕竟数据量一旦从GB级别跳到TB甚至PB级别,传统那套“一台服务器加几个硬盘”的思路就彻底不够用了。你可能会想&#…

2026/10/22 8:38:00

LTE下行SISO仿真:MATLAB代码全链路解析与PDSCH收发实现

简介:压缩包内含一套基于MATLAB编写、面向LTE下行链路的SISO系统级仿真代码,共40个.m文件,体积约35KB,属于轻量级教学型脚本集。代码围绕LTE物理层与无线资源管理关键环节展开,覆盖PDSCH/PDCCH信道处理、OFDM收发、信道…

2026/10/22 8:32:58

veg200数据集科学划分:面向农业AI落地的鲁棒性分层策略

1. 项目概述:为什么 veg200 数据集划分不是“复制粘贴”就能搞定的事 你拿到 veg200 蔬菜分类数据集,第一反应是不是直接 train_test_split 一跑,再手动挪几个文件夹完事?我试过——三次模型在验证集上准确率波动超过12%&#x…

2026/10/21 4:53:08

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/22 0:01:49

电商智能运营体系从0到1:架构设计、落地步骤与避坑指南

前两年我们团队接了一个电商平台的运营中台项目,目标很直白:把过去靠运营拍脑袋做的选品、定价、发券、推活动这些事,逐步用数据算法和自动化流程代替。项目名字内部就叫“电商智能运营体系”。最近有不少朋友问我当时是怎么设计的、踩过哪些…

2026/10/22 0:01:49

若依框架AI代码生成不稳定?用Agent Skill三层结构+五步法搞定

最近一段时间,我一直想把后台管理系统里那些机械重复的增删改查代码交给AI去写。框架用的是若依,按理说这类业务代码模式非常固定,应该是AI最擅长的事情。可真试下来却不是那么回事——你让AI生成一个用户管理模块,它给出的Contro…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑