2026-08-12:统计下标的相反奇偶性得分。用go语言,给定一个整数数组,需要为数组中的每个位置计算一个分数。这个分数等于:在当前索引右侧的所有元素中,与当前元素奇偶性不同(即一个是奇数,另一个是

发布时间:2026/9/29 15:49:51

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/9/27 7:18:00

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

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

2026/9/28 1:56:00

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

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

2026/9/26 6:08:31

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/9/29 15:45:07

从零搭建SVN版本库:目录规划、权限配置与三端接入避坑指南

做版本控制这块工作久了,你会发现团队里最容易被低估的操作,恰恰是SVN里的“创建版本库”。很多人学着学着就去折腾客户端配置、IDE插件,反而把最核心的一步——仓库本身怎么建、目录结构怎么搭、权限怎么分——给跳过去了。遇到“svn not fo…

2026/9/29 15:45:07

宁波企业工作服源头工厂靠谱商家测评排名,价格公道不玩套路

宁波企业工作服定制市场避坑指南:如何找到靠谱源头工厂 很多宁波本地企业在筹备工装采购时,都会陷入同一个困惑:市面上工作服厂家太多,到底该怎么分辨真正靠谱的源头工厂?不少企业吃过版型不符、掉色变形、交付延期甚至隐形加价的…

2026/9/29 15:45:07

STM32嵌入式AI模型选型:Model Zoo与自设计模型的取舍指南

1. 当Model Zoo摆在面前,我们到底在纠结什么第一次在ST官方仓库里翻到Model Zoo的时候,我的反应大概和很多人一样:这么多现成模型,分类、检测、姿态估计、音频事件识别,连量化好的tflite和onnx都给你备齐了&#xff0c…

2026/9/29 15:45:07

OpenHarmony I2C驱动开发实战:协议解析、HDF接入与排障指南

I2C大概是嵌入式开发里永远绕不开的一条总线,在OpenHarmony设备开发里同样如此。项目里接个触摸屏、手势传感器、环境温湿度芯片、OLED显示屏,甚至给外接设备扩展IO口,十有八九都要走I2C。这门课讲的就是OpenHarmony系统下I2C总线怎么用、怎么…

2026/9/29 15:40:07

UE5机械臂控制:Control Rig控制点与约束绑定全攻略

最近在帮朋友做UE5里的六轴机械臂数字孪生演示,从建模、绑定到蓝图驱动,踩了不少坑。最常被问到的问题就是:怎么让机械臂像真实设备那样,每个关节独立控制,而不是整体平移或者播放一段固定动画?这个系列的第…

2026/9/29 11:07:23

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/28 6:05:15

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 7:00:49

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/29 0:04:04

AI Evals实战指南:从零搭建LLM应用评估体系与CI/CD集成

1. 为什么AI Evals值得你花时间搞明白做LLM应用的人,迟早会撞上同一堵墙:模型输出飘忽不定,今天答得好好的,明天换个问法就胡说八道。你改了一版提示词,感觉好像好了点,但到底好了多少?说不清。…

2026/9/29 0:04:04

Java采购管理系统实战:从数据库设计到事务一致性

简介:这是一套面向Java Web初学者与课程设计者的采购管理系统完整源码,采用JSP技术搭建,配合MySQL数据库,用于解决企业采购信息的管理问题,适合作为毕业设计、课程大作业或进销存类项目的参考模板。系统实现了用户登录…

2026/9/29 3:53:39

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/29 9:46:12

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/29 6:36:14

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

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

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

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