如何快速找出成对元素中单身的那个小可怜(异或算法)

BUUCTF逆向实战:从入门到精通之Reverse题解精析 本文深入解析了BUUCTF平台上的经典Reverse逆向工程题目,从入门级的查壳、字符串搜索,到进阶的算法识别、多平台文件逆向,提供了详细的题解思路与实战脚本。文章旨在帮助读者掌握逆向分析的核心方法,如静态分析、动态调试与工具链使用,从而高效破解CTF逆向挑战。 阅读详情

起因

前两天跟我大哥出去吃饭的时候,他说从京东辞职去瓜子了。立马让他给我讲一下都有什么面试题可以让我学习一下的。他就提到了异或算法。

问题

给你一堆数字,其中只有一个单身的,其他都是成对的。(先为这个单身的数字默默的默个哀),如何用最快的方法来找出这个孤单的数字。

解决方案

正常来说第一时间跑到脑子里面的就是开始双重for循环吧,这样肯定不会是面试官想要的答案。那么最合适的当然就是异或运算。另外一个朋友说的定义一个与数组中不会重复的值,开始与数组中的每个元素都做异或运算,最后得出的就是那个单身的元素。比如说就是[1,1,2,2,3], 给一个变量answer为0。1与0做异或运算为1,1与1为0,那么随后的就是3.我当时有点不太理解,如果不是按照你这样的顺序呢,就不对了呀。但是他说不会的,异或运算遵守着交换律,不管怎么样得出的都会是3。一直都没有理解,因为这个问题一直在脑子里转火锅吃的也没有很开心。等到家立马看一下异或运算到底是怎么一回事。

实验

public class Test {

	public static int FindSingleDog() {
		int[] arr = {1,2,3,4,5,1,2,3,4};
		int answer = 0;
		for (int i = 0; i<arr.length; i++) {
			answer = arr[i] ^ answer;
		}
		return answer;
	}
}

果不其然最后返回的就是5,但是我debug一步一步看的时候发现第二步1与2做异或运算的时候为3,我又懵逼了,为什么呢?又查找了一下资料,发现原来是使用转化为二进制来进行操作的,1则是0001,2则是0010,异或为0011.这不就是3了么。0001与0001做异或为0000不就变成0了。果然是还要先看一下这些运算的解释再进行试验会理解的快一点。哈哈哈,明天七夕提前拉拉自己单身狗的被子。

XXTEA加密算法:从原理到实战的轻量级安全解决方案 本文深入解析XXTEA加密算法,从设计原理、代码实现到跨平台应用。作为TEA家族的轻量级安全解决方案,XXTEA以其极小的代码体积和资源占用,特别适合嵌入式设备、移动应用及轻量级网络协议的数据加密场景,为资源受限环境提供了实用的安全保障。 阅读详情

相关推荐

LabVIEW异或和校验实现:从协议到可复用模块

数据校验是串口通信和自定义协议中保证数据完整性的重要手段。异或(XOR)校验基于按位运算,具有实现简单、计算开销低的特点,是许多仪器仪表和嵌入式设备普遍采用的校验方式。LabVIEW作为上位机开发常用工具,虽然未直接提供生成校验码的模块,但通过字符串转字节数组并配合循环累积异或即可实现。本文面向LabVIEW开发者,详细讲解从协议文档理解校验范围、三种码制对比、两种图形化实现方案,以及校验值转换、粘包处理等工程细节,帮助读者快速搭建可复用的异或校验模块,提升串口通信程序的可靠性与开发效率。

weixin_30363285的博客 241

Java单身狗 —— 单例模式

什么单例模式?   单例模式是Java最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时保证只有单个对象被创建。这个类提供了一种访问其对象的唯一的方式(静态调用),可以直接调用,不需要实例化对象。   为什么要使用单例模式?   单例模式主要是为了避免创建多个实例而造成资源的浪费。它可以保证一...

cccrush的博客 906

数学:分析代数几何数论组合数学

哈曼顿距离:max(x1-x2,x2-x1)+max(y1-y2,y2-y1) = max(x1-x2+y1-y2,x1-x2+y2-y1,x2-x1+y1-y2,x2-x1+y2-y1)利用f(x,y)=(x+y,x-y)将点1(x1,y1)点2(x2,y2)转成点3(x3,y3)和点4(x4,y4)后,点1到点2的哈曼顿距离等于点3到点4的切比雪夫距离。切比雪夫距离:max(|x1-x2|,|y1-y2|)。= max(|x3-x4|,|y3-y4|)即点3到点4的切比雪夫距离。三维:(x,y,z)

闻缺陷则喜何志丹 7095

【奇巧淫技 - 位运算】(异或^ 01)找出落单的数(简单)

文章目录前言一、题目二、题解1.奇巧淫技2.其他解法排序遍历哈希表相关 前言 位运算 异或(^)蛮有意思的,分享一下。 一、题目 一个数组里除了某一个数字之外,其他的数字都出现了两次。请写程序找出这个只出现一次的数字。 提示:异或( ^ )可以去除两个重复的值。 二、题解 1.奇巧淫技 直接使用 异或 去重即可。 int n = 0; for (int i = 0...

长生的梦呓 767

FPGA时钟架构解密:从SRCC/MRCC到全局时钟树的实战指南

本文深入解析Xilinx 7系列FPGA时钟架构,从SRCC/MRCC引脚特性到全局时钟树设计,详细介绍了BUFG、BUFMR等关键组件的应用场景和优化策略。通过对比SRCC与MRCC的驱动范围及适用场景,提供低抖动时钟布线技巧和时钟域交叉(CDC)设计方法,帮助工程师构建高性能FPGA时钟系统。

weixin_29191081的博客 1484

HX720数据采集实战:从硬件连接到姿态解析(含避坑指南)

本文详细介绍了HX720高精度ADC芯片在数据采集与姿态解析项目中的实战应用。内容涵盖从硬件电路设计、驱动源码编写与优化,到原始数据处理、校准以及最终姿态角度计算的完整流程,并提供了关键的避坑指南和调试技巧,帮助开发者高效完成从传感器信号到可用姿态数据的转换。

i8j9k0l1的博客 487

干货1-单身狗问题(异或运算符)

  今天在蓝桥杯的微信公众号上看到了这样一个题目,由于题目比较有意思,我就完整的移过来了,嫌题目长可直接跳到分割线之下。   找出单身狗:   食堂规定,在窗口点餐后你会获得一个号码。但是有的时候会有情侣一起来吃饭,这个时候大妈会给这两个人相同的号码;   一天你来到食堂,因为你记得妈妈告诉你,只有名字越长的东西会带来好运,于是你开心的点了一份“超级无敌变态辣麻辣小香锅”。当你回头的时候你发...

weixin_30527323的博客 309

IMU预积分--详细推导过程

IMU预积分推导

weixin_51547017的博客 2万+

java小光棍数_小光棍数 - NYNU_ACM - 博客园

小光棍数时间限制:1000 ms | 内存限制:65535 KB难度:1描述最近Topcoder的XD遇到了一个难题,倘若一个数的三次方的后三位是111,他把这样的数称为小光棍数。他已经知道了第一个小光棍数是471,471的三次方是104487111,现在他想知道第m(m<=10000000000)个小光棍数是多少?输入有多组测试数据。第一行一个整数n,表示有n组测试数据。接下来的每行有...

weixin_28985877的博客 468

智能化运维(AIOps)

• 调查显示,54.79%的企业当前着重关注智能运维的质量领域(包括异常检测、告警收敛、根因分析、 故障处置等)能力建设,其次45.77%的企业关注效率领域,45.49%的企业关注成本领域,30.82%的 企业关注安全领域。从目前的发展情况来看,现阶段AIOps能力大多集中在L2级别, 主要以系统辅助分析,帮助人工进行决策和操作为主,较为领先的 能力实践可以达到L3级别,而L4和L5级别随着AIOps的技术发展 和能力的逐步增强,将是未来智能运维能力建设的发展方向和目标。

追求更专业的设计 3097

Unity资源逆向解析:从APK到AssetStudio的完整实战

本文详细介绍了Unity资源逆向解析的全流程,从APK解包到使用AssetStudio深度解析Unity游戏资源。通过实战案例演示如何提取《植物大战僵尸》等游戏的素材,包括贴图、音频和3D模型,帮助开发者掌握Unity游戏逆向工程的核心技术。

weixin_30664051的博客 475

完美单身

我不时遇到一些Java程序员,他们不确定他们应该如何正确实现Singleton模式。 (如果您不知道什么是Singleton,请尝试Wikipedia: Singleton模式 )。 我并不是在谈论在线程环境中的正确实现。 但是,使用最常见的实现,您可以在Internet上找到所需的内容,从而可以轻松创建任意多个单例。 试想一下,您有以下常见的单例实现: public final ...

最佳 Java 编程 244

2.4G/4G天线共存方案:Air8101多频段隔离设计实战(附波长计算表)

本文深入探讨了物联网设备中Wi-Fi 2.4GHz与4G LTE天线共存设计的实战方案。针对B40与2.4G频段紧邻带来的干扰挑战,文章系统性地提出了空间隔离、PCB布局优化、结构设计三重防线,并提供了关键的波长计算工具与系统级验证Checklist,旨在帮助工程师将多频段隔离设计从“玄学”变为可执行的工程规范。

weixin_29197051的博客 389

一类判断包含颜色整体的题目

长度为n的颜色序列c,称区间lr合法,当且仅当不存在一种颜色x在区间内外均出现过。遇到这种题目,发现内外有冲突可以用异或相消的性质,又想到,考虑一个随机赋权。对于某种颜色x的所有坐标posxi​,我们给除了最后一个之外的其他坐标都赋不同的权值,最后一个赋其他坐标的权值异或和,这样只有一个区间内选到所有颜色x的坐标,异或和才为0。

m0_60506105的博客 721

别再只看图了!代谢组学OPLS-DA分析,R2Y和Q2Y到底怎么看才不踩坑?

本文深入解析代谢组学OPLS-DA分析中的关键指标R2Y和Q2Y,揭示如何避免过拟合陷阱。通过详细解读模型解释能力(R2Y)和预测能力(Q2Y),结合置换检验方法,提供完整的模型评估流程与实战建议,帮助研究者获得可靠的分析结果。

weixin_42638178的博客 196

影楼精修-AI追色算法解析

本文解析了像素蛋糕软件中AI追色功能的技术原理与实现方案,为理解AI追色技术提供了实用参考。

Trent1985的专栏 2万+

zoj 3418 || The 2010 ACM-ICPC Asia Chengdu Regional Contest - C Binary Number

ZOJ  拿成都区域赛的题作为一次比赛了,我就做了这个,水题。。。本来没想做的,轻工的一个学长说,看看题型。。。结果我就看了这道水题,纠结了半天,A了后果断图书馆了。比较两数的二进制差异,找出最小差异。没看清题目,如果差异相同,输出最小的那个A中的数。我晕,WA了数次。后来党说可以用位运算,可怜的我位运算忘得一塌糊涂。。。翻了翻谭浩强的那本绿书。。。呃。这个用异或运算很水啊。。。就是这个^。。两个数字相异或,得出的是他们二进制相同为0,不同为1,然后找这个数字的二进制有多少个1就是要求的差异个数从图书馆回来

小媛在努力~ 1523

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

位运算权值题复盘:异或popcount公式变形与贪心构造最优解

位运算是计算机底层与算法竞赛中绕不开的基础能力,异或(XOR)与popcount(统计二进制中1的个数)的组合更是高频考点。理解这类问题,关键在于把二进制位映射为集合,利用对称差恒等式将目标函数拆解为固定项与可变项。本文从一道字符串重排操作题出发,逐步推导出核心公式,并展示如何将最大化问题转化为最小化集合交集的贪心策略:优先把1放到目标串的0位,从而获得全局最优解。这种“固定项拆出、剩余项求极值”的思路,在数值计算、数据校验、编码设计等工程场景中同样适用。对于备战大厂实习笔试的同学,掌握异或与popcoun

weixin_34221332的博客 470

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Codeforces Round #628 (Div. 2) ABCD

老年人手速场 - - 上分上的可怜 A 添加链接描述 题意 输入n 要我们找出任意一组lcm(a,b)+gcd(a,b)=n 题解 :直接输出1 n-1 太水了 B添加链接描述 题意:输入n 代表有n个元素 再输入n个元素 问你最长的递增子序列有多长 我们可以无限的复制这个预先输入的元素串 粘贴到尾部 题解 :set一下就完事 - - 太水 在这里插入代码片 ...

weixin_45948940的博客 177

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

XTEA加密算法在嵌入式系统中的高效实现与优化

本文深入探讨了XTEA加密算法在嵌入式系统中的高效实现与优化策略。XTEA作为一种轻量级加密算法,以其代码量小、运行速度快、安全性适中的特点,非常适合资源受限的IoT设备。文章从基础实现出发,逐步介绍了循环展开、密钥缓存、预计算等优化技巧,并针对ARM Cortex-M、RISC-V及8位MCU等不同架构提供了深度优化方案,最后通过实测数据对比了优化效果,帮助开发者在安全、性能与资源之间做出最佳权衡。

egg99的博客 997

TEA系列加密算法实战:从C语言到Python的跨平台实现

本文深入探讨了TEA系列轻量级加密算法,包括TEA、XTEA和XXTEA,并提供了从C语言到Python的跨平台实现指南。文章详细解析了算法的核心原理、安全特性及性能差异,特别适合资源受限的物联网设备开发及需要快速加密的Python脚本场景,帮助开发者根据安全与性能需求选择合适的算法。

weixin_28607671的博客 346

SICTF Round#3 逆向复盘:Strings、TEA、SMC 与花指令

CTF 逆向工程通常从二进制文件的静态分析与动态调试切入:先用 Strings、交叉引用快速定位校验逻辑,再结合异或、常量识别判断加密算法,必要时通过内存 dump 与 patch 绕过保护。其技术价值在于把不可读的反汇编逐步还原为可验证的算法流程,显著提升限时赛中的定位、脚本还原与调试绕过效率。该思路广泛用于 SICTF 等 CTF 竞赛、恶意样本分析和漏洞研究场景。以 SICTF Round#3 RE 赛后复盘为线索,串联签到题 Strings 起步、魔改 TEA 参数还原、SMC 自解密 dump、花

weixin_29325515的博客 53

SM4国密算法在物联网设备中的实战应用:从C++代码到硬件优化

本文深入探讨了SM4国密算法在资源受限的物联网设备中的实战应用与优化策略。文章从C++代码层面的极致优化讲起,详细介绍了如何通过查表、预计算密钥、编译器优化等手段提升性能,并探讨了从纯软件实现到借助硬件加速的完整路径,旨在为开发者提供一套既满足合规要求又高效可行的嵌入式数据安全解决方案。

grass的博客 489

【乱搞】【DBSDFZOJ 4415】黄金拼图

传送~题目描述Description: 九条可怜有 n 盒拼图,每盒拼图都有若干拼图块,可以拼出许多矩形图案。可是,可怜经常会弄丢拼图块,因此她需要将一些拼图送回厂家进行补块。可怜懒得将所有拼图拼好来检查完整性,仅当她的一盒拼图的拼图块数无法组成任何 r 块×c 块的矩形图案(其中 r,c≥2),可怜才认为这盒拼图需要返厂补块。返厂补块需要的运费只和含有图块数最多的拼图有关。 可怜将 n 盒拼

jmsyzsfq的博客 1364

递增三元组高效解法:贡献法+值域前缀和+树状数组

递增三元组是算法中典型的全局计数问题,其本质是将‘满足a[i]<a[j]<a[k]且i<j<k的三元组个数’这一抽象目标,建模为每个中间位置j的独立贡献——即左侧小于a[j]的元素个数乘以右侧大于a[j]的元素个数。该建模过程依赖贡献法思想,而高效实现需突破传统下标前缀和的认知局限,转向值域维度的统计加速。树状数组(BIT)因其O(log n)单点更新与前缀查询能力、代码简洁性与现场可复现性,成为国赛级场景下最优的数据结构选择。广泛应用于蓝桥杯、ACM等竞赛及高频数组计数类工业逻辑中。

weixin_34357887的博客 405

MPQ技术内幕

开始尝试翻译一些英文文章,最近正好对mpq产生兴趣,看到一片文章叫做 inside MPQ,于是翻译一下,就当锻炼自己吧。这篇文章非常的不厚道,在关键地方戛然而止,而且没有更新的迹象。让人郁闷无比。但是还是比国内一些研究MPQ的少的可怜的文章要好些。看了这些文章,无比惋惜国内技术的滞后和黑客技术,逆向工程技术的贫乏。我们总是拿来主义,做应用。自己的原创真的太少了。 LEGAL COPY...

diaoqu4574的博客 493
上一篇: Project facet Java version 1.8 is not supported.
下一篇: 浅复制与深复制-集合储存的引用
桃花源居
博客等级 码龄10年 0粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值