【JavaSE】【算法】找出出现一次的数字(找单身狗 Java版)

✨作者:@小孙的代码分享

✨专栏:《Java SE》

✨送给各位的一句话:空杯心态 才能学到新知

✨希望大家看完题目有所收获,别忘了,点赞+评论!

题目

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

思路

首先,从题目中获取到几个关键点:

  1. 非空、整数、数组
  2. 只有一个元素出现一次,其余都出现两次

示例

示例 1:
输入: [1,2,3,2,1]
输出: 3

示例 2:
输入: [3,1,3,1,6,7,6]
输出: 7

 既然这里是整型的数组,那我们不妨考虑一下位运算,那既然是要找出只出现过一次的元素,那就很好想到了,异或操作在两个相同二进制数中进行之后,所有位都会变为 0,而异或完最后的结果,则是只出现过一次(没有元素可以与之异或抵消)的元素。

异或原理: 相异为1,相同为0

 题目分析

 代码如下:

public static void main(String[] args) {
        int sum=0;
        int[] arrary={1,2,3,4,3,2,1};
        for (int i = 0; i <=6 ; i++) {
            sum=sum^arrary[i];
        }
        System.out.println(sum);
    }

 希望对大家学习有所帮助!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孙宇航_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值