数组中只出现一次的问题(异或问题)

从零到英雄:WSL2与Ubuntu22.04的终极性能调优指南 本文详细介绍了如何在Windows系统中通过WSL2与Ubuntu22.04进行性能调优,涵盖内核定制、GPU加速、网络优化等关键技巧,帮助开发者打造媲美原生Linux的高性能开发环境,特别适合AI训练和大数据处理等资源密集型任务。 阅读详情
  • 具体描述:
    在一个整型数组中,数组都是成对出现,只有两个元素为单独的元素,求出这两个元素的值。
  • 思路:
    1、此处为异或预算符的经典问题,两个相同值的异或运算后的值为0;
    2、首先将数组的所有元素做异或运算,最后得到的是两个单独元素异或后的值 (因为相同元素异或后的值均变成0);
    3、两个单独元素肯定会有某一位或者几位是不同的,找出要么为0,要么为1,我们可以根据此位为0或者1,将数组元素分为两个部分,两个部分中,分别各有一个单独的元素,再做一会运算,则找到了这两个值。
  • 代码描述
#include <iostream>

void FindNumsAppearOnce(int (&a)[6])
{
//存放数组中所有元素异或后的值,相同值的异或为零,最后存放的是两个不同元素异或后的值

    int value = 0;   
    int num1,num2;   //存放不同数组中不相同的值
    int flag = 1;    //根据flag的不同将数组元素分为两部分
    for (int i = 0; i < sizeof(a) / sizeof(a[0]); i++)
    {
        value ^= a[i];      
    }
    num1 = num2 = value;    //异或后的值赋给两个元素作为初值
    while ((value & flag) == 0)
    {
        flag <<= 1;         //找到1,1就是单独两个元素不同的那一位
    }
    for (int j = 0; j < sizeof(a) / sizeof(a[0]); j++)
    {
        if ((flag & a[j]) == 0)    
        {
            num1 ^= a[j];
        }
        else {
            num2 ^= a[j];
        }
    }

    std::cout << "不重复的数组元素分别为:" << "\n"  << "num1 = " <<num1 << "  num2 = "<< num2;
}


int main(void)
{
    int a[6] = { 2,4,5,2,5,6 };
    FindNumsAppearOnce(a);
    getchar();

    return 0;
}
  • 后记
    该问题在做算法题目是看到,在此处做记录,以备日后查看学习。
FISCO BCOS 三、多群组部署以及新节点加入群组 本章主要以星形组网和并行多组组网拓扑为例,指导您了解如下内容:了解如何使用创建多群组区块链安装包;了解创建的多群组区块链安装包目录组织形式;学习如何启动该区块链节点,并通过日志查看各群组共识状态;学习如何向各群组发送交易,并通过日志查看群组出块状态;了解群组内节点管理,包括节点入网、退网等;了解如何新建群组。 阅读详情

相关推荐

从编译到调通:RK3588与FPGA的PCIe XDMA驱动实战解析

本文详细解析了在RK3588平台上为FPGA板卡编译、加载与调试PCIe XDMA驱动的完整实战流程。内容涵盖环境准备、Makefile深度定制、编译排错、驱动加载与内核日志解读、设备节点分析以及用户空间编程实战,旨在帮助开发者打通RK3588与FPGA之间的高速PCIe通信链路,实现稳定可靠的数据传输。

weixin_29304021的博客 482

(经典的异或技巧)数组中只出现一次的数字 (两种方法)

数组中只出现一次的数字 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 方法一: 采用异或运算 (算是标准的思路吧) 思路: 此题考察的是异或运算的特点:即两个相同的数异或结果为0。 此题用了两次异或运算特点: (1)第一次使用异或运算,得到了两个只出现一次的数相异或的结果。 (2)因为两个只出现一次的数肯定不同,即

hyqsong的专栏 7022

Unity热更实战:用YooAsset+HybridCLR实现小游戏资源与代码双更新(含避坑清单)

本文详细介绍了Unity小游戏开发中如何通过YooAsset与HybridCLR实现资源与代码双热更新方案。内容涵盖环境配置、架构设计、微信小游戏专项优化、热更代码工程化实践及真机调试技巧,帮助开发者解决审核周期长、紧急修复等痛点,提升更新效率与稳定性。

weixin_42520025的博客 501

数组中只出现一次的数字(异或)

题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。 (1)可以使用hashmap分拣存储 (2)利用异或的位运算  一个数与自身异或是0,一个数与0异或是本身 当数组中只有两个数出现一次,其余数都出现偶数次,那么数组中所有数字异或的结果相当于这两个数字异或的结果 两个数异或的结果中为1的位,说明这两个数在这个位不同 根据在这个位是...

wangdongli_1993的博客 915

服务器被黑?快速检测和识别系统中的恶意进程

在管理服务器时,检测和识别系统中的恶意进程至关重要。本文介绍了使用 `ps`、`top`、`htop` 等系统监控工具,分析日志文件,以及使用 `chkrootkit` 和 `rkhunter` 等安全工具的方法。通过这些步骤,可以有效地检测和处理恶意进程,确保系统的安全和稳定。

_midnight的博客 1416

数组中只出现一次的两个数字(异或法思路)

一个数组中只有2个数字只有一个,其他数字都有两个。找出这两个数字。a, b用HashMap记录就不说了。这里记录一下用异或的方式解决。由于异或特性为自己异或自己为0。a^a = 0;所以可以异或数组中的所有数字得出 a^b 的结果,其他相同的都消掉了。又a!= b 因此,a^b 的结果在二进制中,肯定有一位是1。这个也好理解。

japlus的博客 391

matlab物元可拓模型程序,熵权可拓物元模型

1 概述物元分析方法是中国学者蔡文于20世纪80年代提出的用于解决矛盾问题的技术方法,是研究物元及其变化规律,解决现实世界中不相容问题的有效方法,可应用于生态环境,水资源承载力,农用地分级和土地生态水平等综合评价研究中.本文主要介绍了熵权可拓物元模型的相关概念与该模型的建立过程.2 概念2.1 物元物元分析法的主要思想是把事物用"事物,特征,量值"(分别用N,C,V表示)3个要素以有序三元组的形式...

weixin_33823399的博客 4106

初级算法(数组篇):只出现一次的数字(经典的异或操作)

题目描述: Given a non-empty array of integers, every element appears twice except for one. Find that single one. Note: Your algorithm should have a linear runtime complexity. Could you implement it withou...

HerofH_的博客 479

ESD 防护深度解析:模型、等级、系统设计与防护策略

本文系统阐述了静电放电(ESD)防护的核心技术体系。首先对比分析了HBM(人体模型)和CDM(充电设备模型)两种基础ESD模型的物理特性、测试标准及分级要求,指出相同电压下CDM的破坏性是HBM的15-20倍。其次详细解析了IEC61000-4-2系统级ESD标准,包括接触/空气放电测试方法及判定等级。重点提出了系统级防护的三层架构:空间隔离(≥10mm间距)、电气隔离(地平面分割)和TVS管选型(响应时间<1ns),并对比了MOV、SCR等防护器件特性。针对不同应用场景(消费电子、工业控制等)给出了差异化

bother3000的博客 1882

从LLM到VLM再到VLA:三兄弟的“变形记”——定义、架构演进与最新趋同

LLM、VLM、VLA虽然在时间上依次出现,但它们在架构上的演进并非线性替代,而是形成了一个从“理解语言”到“理解世界”再到“改变世界”的认知闭环。VLA之所以能在短短三年内从概念走向现实,正是因为它站在了LLM和VLM的肩膀上——RT-2的泛化能力来自互联网规模的VLM预训练,π0的扩散策略受益于生成式模型的突破,Helix的双系统架构借鉴了“快慢思考”的认知科学洞见。而反过来,VLA在实际部署中遇到的效率瓶颈和实时性要求,也在倒逼LLM和VLM向更轻量、更高效的架构方向演进。

Ven%的博客 490

异或算法求数组中出现单次的数

一个数组中只有一个数出现一次,其它数出现偶次项,求这个只出现一次的数 先讲异或的性质,对于二进制来说,相同的数异或为0,不同的数异或为1. 例如:1^1=0 0^0=0 1^0=1 根据上面一位数的异或有这个性质,多位数仍然有这个性质,如果字长是8位的,则 00101110^00101110=0,得出 46^46=0.所以两个相同的数异或为0。 现在回归问题: 1、数组中每个出现两个的数最后异或结...

qq_28692269的博客 351

第2.0章 机器人C++学习开篇(一):SLAM为什么使用C++语言及学习路线资料推荐

ROS(机器人操作系统):机器人领域的“操作系统”,提供节点通信、参数管理、工具链支持,是SLAM算法在机器人上部署的核心框架。PCL(点云库):处理三维点云数据的利器,包含滤波、分割、配准等算法,是激光SLAM的核心依赖。Eigen(矩阵运算库):高效的矩阵与线性代数运算库,SLAM中的位姿变换、优化求解都依赖它。Ceres/G2O(优化库):SLAM后端优化的“王牌”,Ceres擅长通用非线性优化,G2O则专为图优化设计,二者是BA( bundle adjustment)等算法的实现基础。

行知SLAM 1241

找出数组中只出现一次的数字

一个数组中,有一个数字只出现一次,其余的数都出现两次,求出那个单独的数 可以使用异或或来解决这个问题,因为两个相同的数异或之后就是0,0与一个数异或还是这个数,而且异或满足交换律 public static void main(String[] args) { int[] arr = {1, 2, 3, 2, 1}; int n=0; for (int i = 0; i < arr.length; i++) { n ^= ar.

m0_60354608的博客 2886

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

随笔06:异或的性质

        转载请注明出处:http://blog.youkuaiyun.com/ns_code/article/details/27568975         这篇文章没有代码。介绍的是纯理论的思路。         异或是一种基于二进制的位运算,用符号XOR或者 ^ 表示。

黑虎阿福的博客 409

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。

剑指offer:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 思路:1)如果把数组中的所有数字都依次异或一遍,则可以消掉成对出现的数字,那么还有两个数字是单一的,肯定也不同,那么最终异或的结果肯定不是0。表示在二进制中肯定有一位是1,那么两个不同的数字,一定有一个在该位为1,另一个在该位为0。如果将整个数组按照该位是否为1分为两部分,那么这两部分各

u013686654的博客 7201

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

剑指offer40:数组中只出现一次的数字

题目描述: 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 要求时间复杂度是O(n),空间复杂度是O(1)。 示例: 输入:数组 {2,4,3,6,2,5,5} 输出:4 6 在考虑这个题目时,可以先考虑这个数组中只有一个数字只出现了一次,其他数字都出现了两次,怎么找出这个数字? 数组中其他的数字都出现了两次,只有一个数字出现了一次就可以使用异或操作, (相同的两个数字异或的结果为0,而0和任意的数异或得到的结果是这个数本身) 让数组

qq_45754055的博客 257

JZ40 数组中只出现一次的数字

描述 一个整型数组里除了两个数字只出现一次,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 这题用上之前说的python内置函数就是我能写出来的代码了: class Solution: def FindNumsAppearOnce(self , array ): if array == []: return False else: tmp = [] for i in ra

Han_torch的博客 178

剑指offer:JZ40 数组中只出现一次的数字

题目描述: 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 代码: //num1,num2分别为长度为1的数组。传出参数 //将num1[0],num2[0]设置为返回结果 public class Solution { public void FindNumsAppearOnce(int[] array, int num1[], int num2[]) { int k = 0; for (int i : array) {

闭关修炼 178

九度笔记之 1351:数组中只出现一次的数字

题目1351:数组中只出现一次的数字 1 秒 内存限制:32 兆 特殊判题:否 提交:1139 解决:314 题目描述:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 输入: 每个测试案例包括两行: 第一行包含一个整数n,表示数组大小。2 第二行包含n个整数,表示数组元素,元素均为int。

KingEasternSun的专栏 1089

找数组中只出现一次的元素

Given an array of integers, every element appears twice except for one. Find that single one.  Note: Your algorithm should have a linear runtime complexity. Could you implement it without using ex

ling913的专栏 2343

leetcode刷题——只出现一次的数字123

1.两个相同的数字相异或结果是0(异或是指两个数字的二进制位相同为0,不同为1) 2.0和任何数字异或都是那个数字

2302_80790488的博客 688

136. 只出现一次的数字—异或运算

136. 只出现一次的数字—异或运算

ly000666的博客 170

LC136. 只出现一次的数字

题目: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。(不使用额外空间来实现) 思路: 不能使用额外空间,可以通过异或来求解。 将数字转化为二进制,当两数相同时,其对应的位将异或为0,最后所有数累计异或可以得到 如1 ^ 2 ^ 1 = 2 题解: class Solution { public: int singleNumber(vector<int>& nums) { int a = 0;

min_coder的博客 120

leetcode--set面试题--(1)找出一个数组中出现一次的元素,其余元素均出现两次;(2)找出整数数组中分别出现了一次的两个数字,其他数都出现了两次

//1.leetcode--找出一个数组中出现一次的元素,其余元素均出现两次 //方法一 :通过map统计每个数字出现的次数,key表示当前数字,value表示这个数字出现的次数,在遍历map找出那个出现一次的数字 public class SetMapInterview { public int singleNumber(int[] nums) { //1.创建一个Map统计每个数字出现的次数,key表示当前数字,value表示这个数字出现的次数 Map..

m0_60897224的博客 326

找出一个数组中之出现一次的两个数

在实现这个问题之前我们先实现这个问题:找出一个数组中之出现一次的一个数 利用异或的特性: 一个数异或0结果是这个数本身 一个数异或1结果是对这个数取反 所以从头到尾依次异或数组中的每一个数字,那么最终的结果刚好是那个只出现一次的数字,(因为一个数和它的本身异或肯定是0,那些出现两次的数字全部在异或中抵消掉了,) def find(data): res=0 for num in data: ...

qq_41386300的博客 216
上一篇: C或C++语言交换变量值的方式
下一篇: c/c++内存对齐总结
drlmemory
博客等级 码龄14年 15粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值