【优选算法必刷100题】第038题(位运算):消失的两个数字

【优选算法必刷100题】第038题(位运算):消失的两个数字

🔥个人主页:Cx330🌸

❄️个人专栏:《C语言》《LeetCode刷题集》《数据结构-初阶》《C++知识分享》

《优选算法指南-必刷经典100题》《Linux操作系统》:从入门到入魔

🌟心向往之行必能至


🎥Cx330🌸的简介:


目录

前言:

38. 消失的两个数字

算法原理(位运算):

思路:

位运算解法代码(C++):

代码一:位图

代码二:异或

博主手记(字体还请见谅哈):

总结:


前言:

聚焦算法题实战,系统讲解三大核心板块:“精准定位最优解”——优选算法,“简化逻辑表达,系统性探索与剪枝优化”——递归与回溯,“以局部最优换全局高效”——贪心算法,讲解思路与代码实现,帮助大家快速提升代码能力

位运算专题


38. 消失的两个数字

题目链接:

面试题 17.19. 消失的两个数字 - 力扣(LeetCode)

题目描述:

题目示例:

算法原理(位运算):
思路:

本题就是 268.丢失的数字+260.只出现一次的数字||| 组合起来的题。
先将数组中的数和【1,n+2】区间内的所有数【异或】在一起,问题就变成了:有两个数出现了【一次】,其余所有的数出现了【两次】。进而变成了 260.只出现了一次的数字||| 这道题

位运算解法代码(C++):
代码一:位图
class Solution { public: vector<int> missingTwo(vector<int>& nums) { //将所有数异或在一起 int ret=0; for(auto x:nums) ret^=x; for(int i=1;i<=nums.size()+2;i++) ret^=i; //找出a,b比特位不同的那一位 int differ=0; while(1) { if(((ret>>differ)&1)==1) break; else differ++; } //根据differ位不同将所有数划分为两大类 int a=0,b=0; for(auto x:nums) if(((x>>differ)&1)==1) b^=x; else a^=x; for(int i=1;i<=nums.size()+2;i++) if(((i>>differ)&1)==1) b^=i; else a^=i; return {a,b}; } };
代码二:异或
class Solution { public: vector<int> missingTwo(vector<int>& nums) { int temp=0; for(auto& x:nums) temp^=x; for(int i=1;i<=nums.size()+2;i++) temp^=i; //现在temp中剩下的是a^b,那么一定至少有一位是1,我们就提取最后一位 int ls=temp&(-temp); int a=0,b=0; for(auto&x:nums) { if(x&ls) a^=x; else b^=x; } for(int i=1;i<=nums.size()+2;i++) { if(i&ls) a^=i; else b^=i; } return {a,b}; } }; 

博主手记(字体还请见谅哈):


总结:

结语:本文介绍了使用位运算解决&quot;消失的两个数字&quot;问题的两种方法。问题可转化为找出两个只出现一次的数字。方法一通过异或所有数后找出差异位,将数字分为两类分别异或;方法二利用异或结果的最低位1作为区分标准。两种方法都实现了O(n)时间复杂度和O(1)空间复杂度的解决方案,适用于处理大规模数据

Read more

Python | XGBoost+SHAP可解释性分析回归预测及可视化算法

Python | XGBoost+SHAP可解释性分析回归预测及可视化算法

立个flag,这是未来一段时间打算做的Python教程,敬请关注。 1 数据及应用领域 我的程序中给出数据data.xlsx(代码及数据见文末),10 列特征值,1 个目标值,适用于各行各业回归预测算法的需求,其中出图及数据自动保存在当前目录,设置的训练集与预测集的比例为 80%:20%。 (1)地球科学与环境科学 * 遥感反演:利用多源遥感数据预测水体深度、土壤湿度、植被指数、叶面积指数等。 * 气象与气候研究:预测降水量、气温、风速、风向等连续气象变量。 * 水文与水资源管理:河流流量、地下水位、径流量预测。 * 环境污染监测:空气质量指数、PM2.5/PM10浓度、重金属污染水平预测。 * 地质与矿业:预测矿区地表沉降、地裂缝发展趋势,或矿产储量评估。 (2)生物学与医学 * 生态学:预测物种分布密度、群落生物量或生态环境因子变化。 * 公共卫生:基于环境、

By Ne0inhk
python之路并不一马平川:带你踩坑Pandas

python之路并不一马平川:带你踩坑Pandas

这是我的亲身经历。作为一名全能型的混子,Pandas是我吃饭的家伙之一,但光是把它请到我的电脑上,就差点让我“饭碗不保”。这是一段长达数周,充满挫折、困惑和最终解脱的曲折历程。我将带你完整回顾我踩过的每一个坑,以及那最后的“救命稻草”。我将以第一视角,带你完整回顾我踩过的那些坑,以及我是如何一步步爬出来的。 记得刚入行那年,我接手的第一个项目是个电商小程序开发。当时为了赶进度,我直接跳过了需求分析阶段,结果上线后发现支付接口和后台数据对不上,不得不紧急下架整改。那三天三夜不眠不休的debug经历,现在想起来还心有余悸。 去年在开发智能家居App时,我又犯了个典型错误:没有做好版本兼容性测试。当用户反馈老型号设备无法连接时,我们才发现蓝牙协议栈对新老设备的处理方式完全不同。这个教训让我养成了建立完整测试矩阵的习惯。 最惨痛的经历是去年年底的云服务迁移。当时为了节省成本,我选择了直接全量迁移数据库,结果因为网络波动导致数据不一致,差点酿成重大事故。现在我做数据迁移时都会严格遵循"全量备份-增量同步-数据校验"的标准流程。 这些血泪教训让我明白,在技术这条路上,捷径往往是最远的路。每

By Ne0inhk
全网最全!Python、PyTorch、CUDA 与显卡版本对应关系速查表

全网最全!Python、PyTorch、CUDA 与显卡版本对应关系速查表

摘要:搞深度学习,最痛苦的不是写代码,而是配环境! “为什么我的 PyTorch 认不出显卡?” “新买的显卡装了旧版 CUDA 为什么报错?” 本文提供一份保姆级的版本对应关系速查表,涵盖从 RTX 50 系列 (Blackwell) 到经典老卡的软硬件兼容信息。建议收藏保存,每次配环境前查一下,能省下大量的排坑时间! 🗺️ 核心逻辑图解 在看表格前,先理清显卡架构的代际关系与 CUDA 版本的强绑定逻辑。 📊 一、PyTorch 版本对照表 (推荐) PyTorch 是目前兼容性最好的框架,只要 CUDA 驱动版本 足高,通常都能向下兼容。对于使用最新硬件(如 RTX 50 系)的用户,请务必使用 2.4 或更高版本。 PyTorch 版本Python 版本推荐 CUDA适用显卡建议2.

By Ne0inhk