发布时间:2026/8/12 12:19:37
2026-08-12:统计下标的相反奇偶性得分。用go语言,给定一个整数数组,需要为数组中的每个位置计算一个分数。这个分数等于:在当前索引右侧的所有元素中,与当前元素奇偶性不同(即一个是奇数,另一个是 2026-08-12统计下标的相反奇偶性得分。用go语言给定一个整数数组需要为数组中的每个位置计算一个分数。这个分数等于在当前索引右侧的所有元素中与当前元素奇偶性不同即一个是奇数另一个是偶数的元素个数。最终返回一个与原数组等长的数组按顺序给出每个索引对应的分数。1 nums.length 100。1 nums[i] 100。输入 nums [1,2,3,4]。输出 [2,1,1,0]。解释nums[0] 1为奇数。因此下标 j 1 和 j 3 满足条件所以下标 0 的分数为 2。nums[1] 2为偶数。因此下标 j 2 满足条件所以下标 1 的分数为 1。nums[2] 3为奇数。因此下标 j 3 满足条件所以下标 2 的分数为 1。nums[3] 4为偶数。因此没有下标满足条件所以下标 3 的分数为 0。因此answer [2, 1, 1, 0]。题目来自力扣3917。算法的大体过程步骤一初始化数据结构获取输入数组nums的长度n。创建一个与nums等长的整型切片数组ans用来存放每个位置最终计算出的分数。创建一个长度为 2 的整型数组cnt用来动态记录在从右向左遍历过程中已经遇到过的偶数和奇数的个数。通常约定cnt[0]存放偶数个数cnt[1]存放奇数个数初始都为 0。步骤二从右向左遍历数组使用循环索引i从n-1递减到0逐步处理每一个元素。这么做的目的是保证当我们处理位置i时所有在它右侧的元素即索引大于i的元素都已经被统计进了cnt中。对于当前索引i执行以下子步骤判断当前元素的奇偶性用nums[i] 1得到当前数字的奇偶标记x。如果nums[i]是奇数x为1如果是偶数x为0。查询右侧相反奇偶性的个数题目要求的分数是在当前索引右侧与当前元素奇偶性不同的元素个数。既然当前元素的奇偶性是x那么与之相反的奇偶性就是x ^ 1异或运算将0变1、1变0。在cnt数组中cnt[x ^ 1]存放的恰好就是已经扫描过的右侧元素中奇偶性为x ^ 1的个数。把cnt[x ^ 1]的值赋给ans[i]即得到位置i的得分。更新计数器当前元素自身现在也要成为“右侧元素”的一部分供更左侧的索引查询。因此将它按奇偶性计入cnt中即执行cnt[x]。这样当遍历到更左边的索引时当前元素就已经被正确统计在内了。步骤三返回结果循环结束后ans中已经按顺序存储了每个索引对应的分数直接返回ans即可。具体执行示例输入 [1,2,3,4]初始cnt [0, 0]i3nums[3]4偶数x0右侧相反奇偶性个数cnt[1]0ans[3]0然后cnt[0]加 1 →cnt[1,0]。i2nums[2]3奇数x1右侧相反奇偶性个数cnt[0]1ans[2]1然后cnt[1]加 1 →cnt[1,1]。i1nums[1]2偶数x0右侧相反奇偶性个数cnt[1]1ans[1]1然后cnt[0]加 1 →cnt[2,1]。i0nums[0]1奇数x1右侧相反奇偶性个数cnt[0]2ans[0]2然后cnt[1]加 1 →cnt[2,2]。最终得到ans [2, 1, 1, 0]与题目描述一致。复杂度分析时间复杂度算法只对数组进行了一次从右向左的遍历循环内部只包含常数次位运算、数组访问和自增操作。整体时间复杂度为O(n)其中 n 为数组长度。额外空间复杂度除了输入数组外算法额外使用了一个长度为 n 的结果数组ans和一个固定大小为 2 的计数数组cnt。如果不将输出数组计入额外空间则辅助空间为O(1)若将必要的输出结构也视为额外空间则总额外空间复杂度为O(n)。一般在该类问题中输出数组是必需的因此可以说总的额外空间复杂度是O(n)。Go完整代码如下packagemainimport(fmt)funccountOppositeParity(nums[]int)[]int{n:len(nums)ans:make([]int,n)cnt:[2]int{}fori:n-1;i0;i--{x:nums[i]1// x 的奇偶性ans[i]cnt[x^1]// 查询右侧奇偶性不等于 x即 x^1的元素个数cnt[x]}returnans}funcmain(){nums:[]int{1,2,3,4}result:countOppositeParity(nums)fmt.Println(result)}Python完整代码如下# -*-coding:utf-8-*-fromtypingimportListdefcount_opposite_parity(nums:List[int])-List[int]:nlen(nums)ans[0]*n cnt[0,0]# cnt[0] 记录右侧偶数个数cnt[1] 记录右侧奇数个数foriinrange(n-1,-1,-1):paritynums[i]1# 当前元素的奇偶性0为偶1为奇ans[i]cnt[parity^1]# 右侧与当前奇偶性不同的元素个数cnt[parity]1returnansif__name____main__:nums[1,2,3,4]resultcount_opposite_parity(nums)print(result)C完整代码如下#includeiostream#includevectorstd::vectorintcountOppositeParity(conststd::vectorintnums){intnnums.size();std::vectorintans(n);intcnt[2]{0,0};// cnt[0] 偶数个数cnt[1] 奇数个数for(intin-1;i0;--i){intparitynums[i]1;// 当前元素的奇偶性0偶1奇ans[i]cnt[parity^1];// 右侧不同奇偶性的元素个数cnt[parity];}returnans;}intmain(){std::vectorintnums{1,2,3,4};std::vectorintresultcountOppositeParity(nums);for(intx:result){std::coutx ;}std::coutstd::endl;return0;}

相关新闻

2026/8/12 12:14:37

C++入门利器CFree:轻量级IDE安装配置与实战指南

1. 为什么选择CFree?一个老C开发者的视角 如果你刚开始接触C,或者厌倦了Visual Studio的庞大和复杂配置,想找一个轻量级、开箱即用的环境来写点小项目、刷算法题,那么CFree可能就是你一直在找的那个“老朋友”。它不是当下最时髦的…

2026/8/12 12:14:37

MFC与OpenCV结合开发桌面图像处理应用实战指南

1. 项目概述:为什么是MFCOpenCV?在工业视觉、医疗影像或者安防监控这些领域,我们经常需要开发一个带界面的桌面应用程序,用来实时显示摄像头画面、抓取图像、然后进行一些处理,比如边缘检测、目标识别或者测量。很多开…

2026/8/12 12:14:37

5分钟搞定Axure中文界面:零基础快速汉化终极指南

5分钟搞定Axure中文界面:零基础快速汉化终极指南 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英…

2026/8/12 13:04:54

MySQL索引深度解析:B+树与Hash索引的性能对比与实战选型

1. 项目概述:一场关于数据库性能的底层较量在数据库的世界里,性能之争往往始于最基础的索引选择。当你的应用从几百条数据的玩具项目,成长为日处理百万级事务的生产系统时,一个简单的WHERE子句查询,是瞬间返回结果还是…

2026/8/12 13:04:54

Windows 10 U盘启动盘制作与系统安装全流程详解

1. 项目概述:为什么U盘安装依然是Windows 10部署的“定海神针”? 在系统部署这个老生常谈的话题里,你可能听过很多“一键重装”、“在线安装”之类的工具,听起来方便快捷。但作为一个折腾过无数台电脑的“老司机”,我可…

2026/8/12 13:04:54

卷积:信号处理与系统分析的核心数学工具

1. 从“信号与系统”到“卷积”:为什么这一章是分水岭如果你正在学习《信号与系统》这门课,或者在工作中需要处理信号处理、图像处理、通信系统等问题,那么“卷积”这个概念,你大概率是绕不过去的。很多朋友学到第十二章&#xff…

2026/8/12 13:04:54

Linux SPI设备驱动开发实战:从设备树到字符设备驱动

1. 项目概述:从零到一构建Linux SPI设备驱动 在嵌入式Linux开发中,SPI(Serial Peripheral Interface)总线因其全双工、高速、简单的特性,被广泛应用于连接各类传感器、存储芯片、显示屏等外设。然而,对于许…

2026/8/12 13:04:54

大麦抢票脚本终极指南:3分钟配置,告别手速焦虑

大麦抢票脚本终极指南:3分钟配置,告别手速焦虑 【免费下载链接】DamaiHelper 大麦网演唱会演出抢票脚本。 项目地址: https://gitcode.com/gh_mirrors/dama/DamaiHelper 还在为心爱明星的演唱会门票秒光而烦恼吗?DamaiHelper 是一个基…

2026/8/12 12:59:54

CentOS 7 上部署新版 MinIO:绕过 glibc 限制的两种实战方案

1. 为什么要在CentOS 7上折腾新版MinIO?最近在给一个内部数据湖项目做技术选型,对象存储这块,S3协议基本是事实标准了。公有云方案虽然省心,但考虑到数据安全、长期成本以及未来可能的混合云架构,自建一个兼容S3的对象…

2026/8/12 10:37:12

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/12 5:35:25

当 LLM 遇见大文档:主流开源项目如何处理上下文超限

从 Agentic Loop 到 Repo Map,七种策略与六类陷阱引言:128K vs 10MB 的硬冲突 2026 年的 LLM 上下文窗口已达到 128K ~ 1M token(≈ 0.5MB ~ 4MB 文本),但 LLM 想要处理的真实数据规模远远超过这个量级:真实…

2026/8/12 9:34:08

Ubuntu 23.10中双击运行.sh文件的完整指南:从权限原理到桌面配置

1. 项目概述:从一次“双击”引发的权限探索在Ubuntu桌面环境下,我们习惯了双击运行那些带有.exe后缀的Windows程序安装包,但当你拿到一个以.sh结尾的Shell脚本文件时,满怀期待地双击它,却很可能只看到一个文本编辑器窗…

2026/8/12 9:34:08

NumPy条件索引实战:np.where与np.argwhere高效数据筛选指南

1. 从一次数据筛选的“笨办法”说起 前几天,我帮一个刚入行的数据分析师同事看代码,他正在处理一批传感器数据,需要找出所有温度超过阈值的数据点,然后进行后续分析。我一看他的实现,好家伙,一个 for 循环…

2026/8/12 9:34:08

基于Docker与Selenium Grid构建高可用浏览器自动化测试环境

1. 项目概述:为什么需要容器化的浏览器自动化?在软件开发和测试领域,浏览器自动化早已不是新鲜事。无论是日常的UI回归测试、数据抓取,还是复杂的业务流程模拟,Selenium都是我们绕不开的利器。然而,但凡在团…

2026/8/10 11:20:30

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/11 17:06:59

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/11 3:05:11

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…