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;}
企业数字化 ERP 产品动态
相关推荐
TI MibSPI DMA配置详解:从寄存器解析到实战调试 1. 项目概述与核心价值在嵌入式开发,尤其是基于TI Hercules或C2000系列MCU的项目中,处理高速、连续的SPI数据流是个绕不开的挑战。想象一下,你的系统需要从多个传感器通过SPI轮询数据,或者向一个高分辨率显示屏持续刷新帧缓存&… · 2026/11/5 8:24:34
人已经用 WorkBuddy 找工作拿了面试,你还在一份份手工改简历 文章目录别人已经用 WorkBuddy 找工作拿了面试,你还在一份份手工改简历1\. 先别急着投,看看自己到底适合什么2\. 岗位太多,不要再一页页刷3\. 简历不是写得漂亮,是让对方看见你能干什么4\. 投得一多,先做张表救命5\. 面… · 2026/10/5 9:38:30
TI 16xx系列控制寄存器实战:从MMIO原理到MPU/ETB配置避坑 1. 从手册到实战:TI 16xx系列控制寄存器深度解析在嵌入式系统开发,尤其是雷达信号处理、工业控制这类对实时性和可靠性要求极高的领域,我们工程师打交道最多的,除了代码,可能就是那一页页密密麻麻的芯片手册了。手册里… · 2026/10/13 5:11:09
电工证的照片哈尔滨怎么办理?官方回应来了,别再被中介坑 电工证的照片哈尔滨怎么办理?官方回应来了,别再被中介坑 你是不是也在哈尔滨,手里攥着一堆材料,就差一张符合要求的证件照片,却不知道从哪开始?别急,这波官方回应来了,帮你理清电工证的照片哈尔滨怎么办理的整个流程,还告诉你怎么避坑,别再被那些“… · 2026/11/14 18:12:57
鱼台电工证在哪里考取保姆级教程 鱼台电工证在哪里考取保姆级教程 学历不高怕报不上名?别慌,我来帮你搞定鱼台电工证在哪里考取的全流程。今天我就从头到尾给你讲清楚,不管是低压电工证还是高压电工证,报考条件、流程、考试内容,甚至电子证书怎么查,都给你安排得明明白白。别再被那些“… · 2026/11/14 18:12:57
陈江特种作业操作证通过率揭秘:找工作没证寸步难行 陈江特种作业操作证通过率揭秘:找工作没证寸步难行 急需特种作业证才能上岗找工作,这几乎是每个想进工地、进厂、进工地的打工人最真实的焦虑。尤其是南阳卧龙区的公路工程从业者,特种作业证几乎是门槛中的门槛,没有证连面试资格都没有。今天咱们就来聊聊… · 2026/11/14 18:12:57
湛江市建筑施工电工证怎么考?实操考试心里没底怕挂科 湛江市建筑施工电工证怎么考?实操考试心里没底怕挂科 实操考试心里没底怕挂科,这是很多初次报考湛江市建筑施工电工证的朋友最真实的担忧。特别是对于南阳卧龙区的初次报考人员来说,面对繁杂的流程和严格的操作考核,很多人都会感到迷茫。其实,只要你掌握… · 2026/11/14 18:12:57
井下电工证叫什么 多久拿证别让证书过期影响工作 井下电工证叫什么 多久拿证别让证书过期影响工作 证书过期了不知道怎么复审延期,你是不是也有这个烦恼?尤其是像井下电工证这类高危岗位证书,一旦过期不仅影响正常上岗,还可能面临严重的安全事故风险。很多人不知道, 井下电工证 的正式名称是“… · 2026/11/14 18:12:57
拿别人的电工证去竞标?官方报名入口必须走正规流程 拿别人的电工证去竞标?官方报名入口必须走正规流程 你还在为 急需特种作业证才能上岗找工作 而发愁吗?尤其是电工证,几乎是建筑、电力、制造等行业的“硬通货”,但很多人在拿到证之前就已经被要求“持证上岗”,这就成了一个大问题。如果你现在正在准备… · 2026/11/14 18:11:57
电工证丢失还能补吗?千万别踩坑,丢了证等于失业 电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。… · 2026/11/13 22:30:50
电力电缆作业证直播报名入口与办理流程良心建议 电力电缆作业证直播报名入口与办理流程良心建议 你是不是也担心学历不高报不了名?别急,今天就给你讲讲 电力电缆作业证直播 的报名流程和那些你必须知道的干货, 良心建议 在这里,别错过。 电力电缆作业证直播报名需要什么条件?… · 2026/11/14 13:23:47
英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 怕考不过白交培训费?英德电工证报考费多少钱,你真的了解吗?现在市面上培训机构五花八门,价格参差不齐,很多人一不小心就花了冤枉钱,结果还考不过。别急,今天就来给你说清楚英德电工证的… · 2026/11/14 13:20:59
有初级电工证怎么工作 2026河南最新政策怎么应对 有初级电工证怎么工作 2026河南最新政策怎么应对 之前考的证在外省能不能转过来?这个问题我每天被问上百次。2026年河南最新政策对证书跨省转移有了明确说明,特别是南阳市的从业者,需要特别关注。… · 2026/11/14 0:00:31
电工证过期了不知道怎么复审?考电工证自学书+官方报名入口全攻略 电工证过期了不知道怎么复审?考电工证自学书+官方报名入口全攻略 证书过期了不知道怎么复审延期?很多人遇到这种情况,要么是工作太忙没时间处理,要么是不知道具体流程,导致证书失效,影响工作和项目进展。其实复审并不难,关键是要找准官方报名入口,掌… · 2026/11/14 0:00:31
为什么要低压电工证实操考试考什么 为什么低压电工证值不值得考?别再被中介骗了 你是不是也经常看到网上有人在问“低压电工证到底值不值得考”?或者在找报名点时,担心被中间人骗钱?这些问题,我懂,我也经历过。作为一名在应急管理行业摸爬滚打多年的从业者,我深知低压电工证不仅是一个从… · 2026/11/14 0:00:31
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/13 6:12:21
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/13 6:11:51
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/13 22:31:30