LintCode刷题:82· 落单的数I
描述:
给出 2 * n + 1
个数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。
样例:
输入:A = [1,1,2,2,3,4,4]
输出:3
思路:
利用异或位运算的性质:任何数与自身异或的结果为0,0异或任何数等于任何数。
我们只需遍历数组中的每一个元素,并将其进行异或。因为,异或满足交换律和结合律,所以最终的异或结果将仅仅包含只出现一次的那个数。
代码:
/** * @author Fahaxiki * @date 2021-05-25 */ public class Solution { public static int singleNumber(int[] A) { if(A == null || A.length == 0) { return -1; } int result = 0; for (int value : A) { // ^= 按位异或运算符 result ^= value; } return result; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端