Kimi LeetCode 3569. 分割数组后不同质数的最大数目 Java实现
📅 2026/7/15 8:41:25
👁️ 次浏览
以下是 LeetCode 3569 分割数组后不同质数的最大数目 的 Java 实现。核心思路问题转化对于每个查询我们需要找到最优分割点 k使得\text{prefix中不同质数个数} \text{suffix中不同质数个数}关键观察设整个数组中共有 T 个不同的质数。若某个质数 p 的首次出现位置为 l、末次出现位置为 r则- 若分割点 k \in [l1, r]则 p 在前后两段都出现贡献为 2额外收益 1- 否则 p 只出现在一段中贡献为 1因此\text{答案} T \max{k} \{\text{在位置 } k \text{ 处被两边都有的质数个数}\}数据结构- 埃氏筛O(10^5) 预处理质数表O(1) 判断质数- TreeSet红黑树对每个质数维护其出现的所有下标支持 O(\log n) 的插入、删除、查最值- 懒标记线段树维护每个分割位置的额外收益即有多少质数在该位置被两边都包含支持 O(\log n) 的区间加减和区间最大值查询每次查询修改一个元素时只需更新受影响质数的区间贡献然后查询线段树最大值即可。时间复杂度 O((nq) \cdot \log n)空间复杂度 O(n)。javaimport java.util.*;class Solution {static final int MX 100000;static boolean[] isPrime new boolean[MX 1];static boolean sieveInitialized false;// 懒标记线段树区间加 区间最大值static class SegTree {int n, size;int[] mx, lazy;SegTree(int n) {this.n n;this.size 1;while (size n) size 1;mx new int[size 1];lazy new int[size 1];}void apply(int o, int v) {mx[o] v;lazy[o] v;}void push(int o) {if (lazy[o] ! 0) {apply(o 1, lazy[o]);apply(o 1 | 1, lazy[o]);lazy[o] 0;}}void update(int l, int r, int v) {if (l r) return;update(1, 0, size - 1, l, r, v);}void update(int o, int L, int R, int l, int r, int v) {if (l L R r) {apply(o, v);return;}push(o);int mid (L R) 1;if (l mid) update(o 1, L, mid, l, r, v);if (r mid) update(o 1 | 1, mid 1, R, l, r, v);mx[o] Math.max(mx[o 1], mx[o 1 | 1]);}int queryMax() {return mx[1];}}public int[] maximumCount(int[] nums, int[][] queries) {// 埃氏筛预处理质数表只执行一次if (!sieveInitialized) {Arrays.fill(isPrime, true);isPrime[0] isPrime[1] false;for (int i 2; i * i MX; i) {if (isPrime[i]) {for (int j i * i; j MX; j i) {isPrime[j] false;}}}sieveInitialized true;}int n nums.length;int q queries.length;int[] ans new int[q];// pos.get(p) 质数 p 出现的所有下标有序MapInteger, TreeSetInteger pos new HashMap();for (int i 0; i n; i) {int x nums[i];if (isPrime[x]) {pos.computeIfAbsent(x, k - new TreeSet()).add(i);}}// 线段树维护每个分割位置的额外收益SegTree seg new SegTree(n);// 初始化出现 ≥2 次的质数其 [first, last] 区间贡献 1for (TreeSetInteger indices : pos.values()) {if (indices.size() 2) {seg.update(indices.first(), indices.last(), 1);}}// 处理每个查询for (int qi 0; qi q; qi) {int idx queries[qi][0];int val queries[qi][1];int old nums[idx];nums[idx] val;// 删除旧值if (isPrime[old]) {TreeSetInteger indices pos.get(old);if (indices.size() 2) {seg.update(indices.first(), indices.last(), -1);}indices.remove(idx);if (indices.isEmpty()) {pos.remove(old);} else if (indices.size() 2) {seg.update(indices.first(), indices.last(), 1);}}// 插入新值if (isPrime[val]) {TreeSetInteger indices pos.get(val);if (indices null) {indices new TreeSet();pos.put(val, indices);} else {if (indices.size() 2) {seg.update(indices.first(), indices.last(), -1);}}indices.add(idx);if (indices.size() 2) {seg.update(indices.first(), indices.last(), 1);}}// 答案 总不同质数个数 最大额外收益ans[qi] pos.size() seg.queryMax();}return ans;}}验证示例输入 输出 说明nums [2,1,3,1,2], queries [[1,2],[3,3]] [3, 4] 第一次查询后分割得 123第二次得 224nums [2,1,4], queries [[0,1]] [0] 修改后数组无质数答案为 0
1. 项目概述:当程序在沉默中“死去” 做C开发这么多年,最让人头疼的崩溃问题,往往不是那些能抛出异常、留下调用栈的“明枪”,而是那种程序窗口“唰”一下消失,日志里干干净净,只留下一个“进程已退出&…
📅 2026/7/15 8:40:25
LittleD SQL解析器实现原理:嵌入式环境下的语法分析技术 【免费下载链接】LittleD A relational database for embedded devices and sensors nodes 项目地址: https://gitcode.com/gh_mirrors/li/LittleD
在物联网和嵌入式设备蓬勃发展的今天,如…
📅 2026/7/15 8:40:25
1. free()函数基础:理解内存释放的本质 在C语言中,动态内存管理就像租房子一样。当你使用malloc()、calloc()或realloc()时,相当于向系统"租借"了一块内存空间。而free()函数就是你的退房手续 - 它告诉系统:"这块内…
📅 2026/7/15 8:40:25
一、今天,AI 拟人化监管正式生效
7 月 15 日,《人工智能拟人化互动服务管理暂行办法》正式施行。这是全球首个专门针对 AI 拟人化互动的法规。项目详情发布机关国家网信办、发改委、工信部、公安部、市场监管总局公布日期2026 年 4 月 10 日施行日期2026…
📅 2026/7/15 9:27:41
5分钟上手gInk:Windows屏幕标注新选择,让演示从此生动起来 【免费下载链接】gInk An easy to use on-screen annotation software inspired by Epic Pen. 项目地址: https://gitcode.com/gh_mirrors/gi/gInk
你是否曾在线上会议中,对着…
📅 2026/7/15 9:27:41
开源音乐聚合引擎:洛雪音乐音源技术方案深度解析与部署指南 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic-
在数字音乐时代,技术爱好者面临一个核心难题:如何在…
📅 2026/7/15 9:27:41
一、DeepMind CEO:AGI 五年内到来
7 月 15 日,DeepMind CEO 哈萨比斯在接受采访时给出了一个具体时间表:“AGI 可能在 5 年内到来。我们需要现在就开始建立监管框架。”他特别提议参照 FINRA(美国金融业监管局)的模型—…
📅 2026/7/15 9:27:41
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…
📅 2026/7/15 9:27:41
凌晨三点,手机屏幕的光刺得眼睛生疼,我盯着后台那几条惨淡的数据,心里像堵了块湿棉花。又是白忙活一场。朋友圈里那些搞SEO的大V,一个个晒着后台截图,红红绿绿的曲线往上窜,嘴里喊着“风口来了”,听得我直反胃。我也曾是个愣头青,觉得只要抓住了那个所谓的5geo buzz,就…
📅 2026/7/15 9:26:40
1. COM线程模型基础与CoInitializeEx核心作用在Windows平台开发中,组件对象模型(COM)的线程处理机制一直是开发者必须掌握的底层知识。作为COM初始化的门户函数,CoInitializeEx不仅决定了对象在何种线程环境下运行,更影响着整个组件的并发性能…
📅 2026/7/15 0:00:17
1. 为什么M芯片Mac用户需要降级到Monterey? 去年刚拿到M2芯片的MacBook Pro时,我第一时间升级到了Ventura系统。结果第三天就遇到了微信闪退、Final Cut Pro渲染卡顿的问题。后来在开发者论坛发现,不少专业软件对Ventura的适配都存在问题。这…
📅 2026/7/15 0:00:17
1. 背景与核心概念在AI大模型快速发展的今天,许多开发者和研究者都面临一个现实问题:如何在有限的硬件预算下实现高效的本地大模型部署。特别是对于个人开发者和小型团队来说,购买最新的高端显卡成本高昂,而利用现有的或二手硬件资…
📅 2026/7/15 0:00:17
豆包openclaw最近圈子里都在聊豆包openclaw,我也没忍住,掏腰包入手了一套。说实话,刚拿到手的时候,心里是打鼓的。毕竟市面上类似的智能硬件太多了,有的吹得天花乱坠,用起来却是一堆bug。为了不让大家的钱打水漂,我连续用了半个月。从开箱到日常高频使用,甚至故意测试它…
📅 2026/7/14 6:35:02
SQLyog 13.3.1 社区版在Windows 10/11上的完整安装与连接指南 对于刚接触MySQL数据库管理的开发者和学生来说,选择一个直观易用的图形化管理工具至关重要。SQLyog作为一款轻量级但功能强大的MySQL GUI工具,能够显著提升数据库操作的效率和体验。本文将详…
📅 2026/7/14 12:06:52
SPEC CPU 2006 跨平台基准测试深度实战:ARM/X86/MIPS 架构配置优化与结果分析方法论在当今多元化的计算架构时代,如何客观评估不同处理器平台的真实性能成为系统工程师和性能优化专家的核心挑战。SPEC CPU 2006 作为业界公认的计算密集型基准测试套件&am…
📅 2026/7/14 7:15:18
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/14 15:11:56
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/15 2:24:18
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/14 15:11:56