首页 > 其他分享 >3158. 求出出现两次数字的 XOR 值

3158. 求出出现两次数字的 XOR 值

时间:2024-10-12 09:24:58浏览次数:7  
标签:XOR 数字 nums 异或 num 数组 3158

给你一个数组 nums ,数组中的数字 要么 出现一次,要么 出现两次。

请你返回数组中所有出现两次数字的按位 XOR 值,如果没有数字出现过两次,返回 0 。

示例 1:

输入:nums = [1,2,1,3]

输出:1

解释:

nums 中唯一出现过两次的数字是 1 。

示例 2:

输入:nums = [1,2,3]

输出:0

解释:

nums 中没有数字出现两次。

示例 3:

输入:nums = [1,2,2,1]

输出:3

解释:

数字 1 和 2 出现过两次。1 XOR 2 == 3 。

解题思路:
1.先说明下XOR值
“按位 XOR 值”指的是对两个或多个二进制数进行逐位异或(XOR)操作的结果。异或操作是一种位运算,其特点是:
当两个位相同时,结果为 0。
当两个位不同时,结果为 1。
2.实现就是根据map储存,然后判断value是否大于2,把大于的部分计算即可

完整代码:
    /**
     * 使用异或操作查找重复的数字
     * 此方法通过异或操作来找出数组中重复出现的数字
     * 异或操作的特点是,两个相同的数异或结果为0,因此数组中所有数字异或的结果等于重复数字的值
     * 
     * @param nums 输入的整数数组
     * @return 数组中重复的数字
     */
    public int duplicateNumbersXOR(int[] nums) {
        // 存储最终结果
        int res = 0;
        // 使用哈希表记录每个数字出现的次数
        Map<Integer,Integer> map = new HashMap<>();
        for (int num : nums) {
            // 更新哈希表中数字出现的次数,如果不存在则初始化为0
            map.put(num, map.getOrDefault(num, 0) + 1);
            // 获取当前数字出现的次数
            Integer integer = map.get(num);
            // 如果数字出现次数大于等于2,则将其与结果进行异或操作
            // 这里体现了利用异或操作寻找重复数字的核心逻辑
            if(integer >=2){
                res = res ^ num;
            }
        }
        // 返回结果,即数组中重复的数字
        return res;
    }

标签:XOR,数字,nums,异或,num,数组,3158
From: https://www.cnblogs.com/java-cheng/p/18459811

相关文章

  • 实现猜数字游戏的简易代码
    文章目录一、猜数字游戏讲解1.rand2.rand3.time4.设置随机数的范围二、实现猜数字游戏1.打印一个简易菜单2.玩游戏的过程3.完整的基础代码前言掌握并学习了前面的知识,那么我们可以用所学的知识写一些有趣的代码。比如:写一个猜数字游戏。本篇内容将详细讲解如何写猜数......
  • uniapp、微信小程序、Vue中使用nzh库实现数字转中文大写
    一、nzh库简介nzh库是一款实用的数字转中文大写、中文读数工具,适用于JavaScript和Node.js环境。它可以帮助我们在项目中轻松实现数字与中文大写的相互转换,提高项目的可读性和易用性。二、在uniapp中使用nzh库1、安装nzh库在uniapp项目中,首先需要安装nzh库。打开项目根目录,......
  • 【产品经理修炼之道】-数字人抢滩 Web 3.0
    编辑导语:品牌营销的方式逐渐走向多样化,数字技术的发展也为营销方式注入了更多活力,比如数字人、元宇宙等概念,便对ToB的营销格局产生了一定影响。那么,数字人营销当下进展到哪个阶段了?本文进行了一定解读,一起来看一下。从哪一个数字人开始,吸引了你的注意?是弹吉他的清华学生华智......
  • 康达新材: 以CRM丰富数字化转型助推业务全面升级
    康达新材料(集团)股份有限公司(简称“康达新材”)成立于1998年,深交所主板上市,公司管理总部位于上海浦东新区,拥有500余人的研发团队,2023年集团总人数超过1700人,产值近28亿元。康达新材主营胶粘剂与特种树脂新材料、显示材料、电磁兼容设备、电源模块技术,多个系列产品性能处于国内......
  • 引领行业数字变革,天翼云出席IDC年度盛典暨颁奖典礼!
    近日,2024IDC中国年度盛典暨颁奖典礼在上海隆重开幕。天翼云出席大会数字工业行业峰会及金融行业峰会,分享了天翼云的智算布局及在行业数字化转型方面的技术探索和实践成果。天翼云全面升级产品及生态矩阵,迈入智能云的新发展阶段。天翼云积极布局智算产业,提供丰富的智能资源供给,打......
  • 实现远距离通信 PS304数字接口转发器实现UART转换为I2C、SPI、1Wire等多种数字接口!
    实现远距离通信PS304数字接口转发器实现UART转换为I2C、SPI、1Wire等多种数字接口!PS304多种数字接口物理层协议转发器,能够实现UART转换为I2C、SPI、1Wire等其他数字接口,以实现远距离通信。该转发器具备内嵌磁隔离双电源及辅助增强电源电路、自适应线缆算法和强大灵活的S2S协议......
  • 宅急送数字化转型新篇章:以数兴企洞察客户需求,CRM赋能客户价值全面提升
    宅急送1994年成立于中国北京,是一家全国性综合物流服务企业。公司定位“综合物流一体化解决方案专家”,依托宅急送强大体系资源与业务架构支撑,致力于为大品牌商提供分销渠道供应链物流管理服务、为平台电商提供供应链物流服务。作为中国最早的民营快递企业之一,宅急送是专业的快递、......
  • SMB签名是一种通过数字签名技术保障数据在网络传输过程中的完整性和来源验证的机制。
    SMB签名是ServerMessageBlock(SMB)协议中的一种安全机制,旨在确保数据的完整性和身份验证。1.什么是SMB签名?SMB签名是一种通过数字签名技术保障数据在网络传输过程中的完整性和来源验证的机制。它通过对数据进行哈希处理,并附加一个签名,确保接收方能够确认收到的数据没有被篡改。......
  • zlibrary数字图书馆官网镜像网址及客户端入口(长期更新)
    zlibrary数字图书馆介绍Z-library,被誉为全球范围内最为庞大的数字图书馆之一,其藏书量之丰富令人叹为观止,总计囊括了超过9,826,996册电子书及84,837,646篇学术期刊文章。这座庞大的知识宝库覆盖了从经典文学巨著到前沿理工学科,从人文艺术瑰宝到专业学术论文的广泛领域,几乎能够......
  • 用布尔表达式巧解数字电路图
    1.前置知识明确AND,OR,XOR,NOR,NOT运算的规则参见:E25.【C语言】练习:修改二进制序列的指定位这里再补充一个布尔运算符:NOR,即先进行OR运算,再进行NOT运算如下图为其数字电路的符号注意到在OR符号的基础上,在尾部加了一个(其实由简化而来)附:NOR的真值表2.R-S触发器(......