2026-07-26:将数组转换为交替质数数组的最少操作次数。用go语言,给定一个整数数组 `nums`,你需要通过最少的操作次数,把它变成满足特定规律的数组。 规律是: - 数组中所有索引为偶数的位
2026-07-26将数组转换为交替质数数组的最少操作次数。用go语言给定一个整数数组nums你需要通过最少的操作次数把它变成满足特定规律的数组。规律是数组中所有索引为偶数的位置最终的值必须是质数。所有索引为奇数的位置最终的值必须是非质数。每次操作只能让任意位置的元素加 1。目标是求出让整个数组满足这个条件所需的最少操作次数。1 nums.length 100000。1 nums[i] 100000。输入 nums [1,2,3,4]。输出 3。解释下标 0 处的元素必须是质数。将 nums[0] 1 增加到 2使用 1 次操作。下标 1 处的元素必须是非质数。将 nums[1] 2 增加到 4使用 2 次操作。下标 2 处的元素已经是质数。下标 3 处的元素已经是非质数。总操作次数 1 2 3。题目来自力扣3896。大体步骤如下一、质数预计算阶段在init()函数中代码预先构建了一个质数标记数组notPrime长度为100_004。初始化标记数组notPrime[0]和notPrime[1]被标记为1因为 0 和 1 不是质数。其余位置初始为0表示暂时认为是质数。埃拉托色尼筛法从 2 开始遍历只要i * i mx即i 316左右检查notPrime[i]。如果notPrime[i] 0说明 i 是质数则将 i 的所有倍数从i * i开始标记为1非质数。筛选完成后notPrime[p] 0表示 p 是质数notPrime[p] 1表示 p 不是质数。这里的数组大小取100_004是因为题目中元素最大值是 100000而操作是不断增加数值可能超出原最大值。选用大于 1e5 的下一个质数 100003 再加 1确保在增加过程中查询质数属性时不越界。二、主处理过程minOperations函数遍历输入数组nums对每个元素根据其索引的奇偶性进行不同处理并累加操作次数。遍历数组用for i, x : range nums同时获取索引i和对应的值x。确定目标条件如果i是偶数i % 2 0要求该位置的最终值必须是质数即notPrime[x]最终应该等于0。如果i是奇数i % 2 1要求该位置的最终值必须是非质数即notPrime[x]最终应该等于1。用i % 2正好可以表达这个期望值偶数索引期望notPrime[x] 0奇数索引期望notPrime[x] 1内层循环递增对于当前位置的数值x检查notPrime[x]是否等于i % 2如果不等说明当前值不满足条件。由于只能做“加 1”操作于是将x增加 1同时操作次数ans加 1然后再次判断新x是否满足条件。循环终止条件当notPrime[x] i % 2时停止此时x满足该索引位置的要求偶数索引时 x 是质数奇数索引时 x 是非质数。这个循环保证了每个元素通过最少次数的“加 1”操作达到离它最近的一个满足条件的值向上搜索第一个符合条件的数。累加结果每处理完一个元素其所需的操作次数已经累加到ans中。遍历结束后ans就是整个数组变为交替质数/非质数数组的最少总操作次数。三、示例执行过程以nums [1, 2, 3, 4]为例i0偶数期望质数x1notPrime[1] 1 ≠ 0递增到 2质数操作 1。i1奇数期望非质数x2notPrime[2] 0 ≠ 1递增到 3质数操作 1仍不满足递增到 4非质数操作 1共 2。i2偶数期望质数x3notPrime[3] 0 0已满足操作 0。i3奇数期望非质数x4notPrime[4] 1 1已满足操作 0。总操作次数 1 2 0 0 3。四、时间复杂度分析质数预计算埃氏筛的时间复杂度为 O(M log log M)其中 M 100004。这是一个常数上限所以是 O(1)。主循环对数组中每个元素内层的for循环会让x递增直到找到符合条件的值。在最坏情况下每次可能跨越多个数但每个数最多递增到下一个符合条件的值而质数和非质数的间隔是有限的。由于质数分布相对密集在 1e5 范围内最大间隔不超过几百实际上内层循环执行次数与数组长度 n 成线性关系总体可以认为是 O(n)。如果严格分析每个位置的操作次数等于“到达下一个符合条件的数的距离”所有距离之和不会超过某个常数乘以 n因为数值范围有限质数间隙有界因此仍是 O(n)。总时间复杂度O(n)其中 n 是数组长度。五、空间复杂度分析notPrime 数组大小为 100004 的整型数组占用常数级额外空间O(1)。其他变量只用了几个整型变量i, x, ans 等O(1)。总额外空间复杂度O(1)。Go完整代码如下packagemainimport(fmt)constmx100_004// 1e5 的下一个质数是 1e5 3varnotPrime[mx]int{1,1}funcinit(){fori:2;i*imx;i{ifnotPrime[i]0{forj:i*i;jmx;ji{notPrime[j]1}}}}funcminOperations(nums[]int)(ansint){fori,x:rangenums{// 如果 i 是偶数那么循环直到 notPrime[x] 0x 是质数// 如果 i 是奇数那么循环直到 notPrime[x] 1x 不是质数fornotPrime[x]!i%2{ansx}}return}funcmain(){nums:[]int{1,2,3,4}result:minOperations(nums)fmt.Println(result)}Python完整代码如下# -*-coding:utf-8-*-defmin_operations(nums):mx100004# 1e5 的下一个质数是 1e5 3not_prime[0]*mx not_prime[0]not_prime[1]1# 埃氏筛标记非质数foriinrange(2,int(mx**0.5)1):ifnot_prime[i]0:forjinrange(i*i,mx,i):not_prime[j]1ans0fori,xinenumerate(nums):# 如果 i 是偶数需要 not_prime[x] 0x 是质数# 如果 i 是奇数需要 not_prime[x] 1x 不是质数whilenot_prime[x]!i%2:ans1x1returnansif__name____main__:nums[1,2,3,4]resultmin_operations(nums)print(result)C完整代码如下#includeiostream#includevectorusingnamespacestd;constintmx100004;// 1e5 的下一个质数是 1e5 3intnotPrime[mx]{1,1};// 初始化埃氏筛voidinit(){for(inti2;i*imx;i){if(notPrime[i]0){for(intji*i;jmx;ji){notPrime[j]1;}}}}intminOperations(vectorintnums){intans0;for(inti0;inums.size();i){intxnums[i];// 如果 i 是偶数需要 notPrime[x] 0x 是质数// 如果 i 是奇数需要 notPrime[x] 1x 不是质数while(notPrime[x]!i%2){ans;x;}}returnans;}intmain(){init();// 初始化质数表vectorintnums{1,2,3,4};intresultminOperations(nums);coutresultendl;return0;}

相关新闻

TI MibSPI DMA配置详解:从寄存器解析到实战调试

TI MibSPI DMA配置详解:从寄存器解析到实战调试

1. 项目概述与核心价值在嵌入式开发,尤其是基于TI Hercules或C2000系列MCU的项目中,处理高速、连续的SPI数据流是个绕不开的挑战。想象一下,你的系统需要从多个传感器通过SPI轮询数据,或者向一个高分辨率显示屏持续刷新帧缓存&…

2026/7/26 2:29:52阅读更多 →
人已经用 WorkBuddy 找工作拿了面试,你还在一份份手工改简历

人已经用 WorkBuddy 找工作拿了面试,你还在一份份手工改简历

文章目录别人已经用 WorkBuddy 找工作拿了面试,你还在一份份手工改简历1\. 先别急着投,看看自己到底适合什么2\. 岗位太多,不要再一页页刷3\. 简历不是写得漂亮,是让对方看见你能干什么4\. 投得一多,先做张表救命5\. 面…

2026/7/26 2:29:52阅读更多 →
LangGraph 中的 MessagesState

LangGraph 中的 MessagesState

LangGraph 中的 MessagesState(注意官方名称是复数 MessagesState,不是 MessageState)是整个框架专为对话和 Agent 场景预制的内置状态类型。它的核心价值就一句话:用一个带 add_messages reducer 的 messages 字段,把…

2026/7/26 2:29:52阅读更多 →
5分钟搞定C++开发环境:小熊猫Dev-C++让编程学习更简单

5分钟搞定C++开发环境:小熊猫Dev-C++让编程学习更简单

5分钟搞定C开发环境:小熊猫Dev-C让编程学习更简单 【免费下载链接】Dev-CPP A greatly improved Dev-Cpp 项目地址: https://gitcode.com/gh_mirrors/dev/Dev-CPP 对于许多想要学习C编程的新手来说,最大的障碍往往不是编程语言本身,而…

2026/7/26 8:43:01阅读更多 →
Qwen3.5大模型选型与部署实战指南

Qwen3.5大模型选型与部署实战指南

1. 大模型选型背景与核心考量在自然语言处理领域,基础模型的选择往往决定了后续应用开发的天花板。Qwen3.5作为通义千问系列的最新迭代版本,在中文理解、代码生成和数学推理等关键指标上展现出显著优势。根据我的实测经验,当项目需求涉及以下…

2026/7/26 8:43:01阅读更多 →
Windows Copilot反代OpenAI API:低成本使用GPT服务的技术方案

Windows Copilot反代OpenAI API:低成本使用GPT服务的技术方案

如果你正在为 OpenAI API 的高昂费用发愁,或者因为网络访问限制而无法顺畅使用 GPT 服务,那么这篇文章可能会给你带来惊喜。最近在开发者圈子里流传着一个"免费白嫖" GPT 服务的方法——通过 Windows Copilot 反代 OpenAI 接口。这听起来像是天…

2026/7/26 8:43:01阅读更多 →
Unity逆向工程利器:Il2CppDumper核心原理与实战指南

Unity逆向工程利器:Il2CppDumper核心原理与实战指南

1. 项目概述:为什么我们需要Il2CppDumper?如果你在Unity逆向工程这个圈子里混过一段时间,或者尝试过拆解一些现代Unity游戏,那你大概率遇到过一种情况:用传统的.NET反编译工具(比如dnSpy)打开游…

2026/7/26 8:43:01阅读更多 →
G-Helper完整指南:轻量化华硕笔记本控制工具,释放硬件性能的终极方案

G-Helper完整指南:轻量化华硕笔记本控制工具,释放硬件性能的终极方案

G-Helper完整指南:轻量化华硕笔记本控制工具,释放硬件性能的终极方案 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProA…

2026/7/26 8:43:01阅读更多 →
智能会议录音转文字工具全解析与实战指南

智能会议录音转文字工具全解析与实战指南

1. 会议录音转文字痛点解析 作为经常需要整理会议纪要的职场人,我太理解那种面对几小时录音文件的崩溃感了。上周三的部门例会,我花了整整三个晚上逐句回放录音,结果交上去的会议纪要还是被领导指出漏掉了关键决策点。这种低效的手工转录不仅…

2026/7/26 8:41:01阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/25 23:03:25阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/25 19:03:04阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/25 19:03:04阅读更多 →