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

哈哈,今天做到一道看起来很简单,但其实很巧妙的一道题

那么一开始的我想用计数器概念来做,但是发现行不通,题目条件有点苛刻,最后突然想到了一开始博哥给我讲的^运算符,

它的运算规律是这样的

涉及到异或运算,对于这道题,你应该了解异或有什么样性质

  1.  任何数与0异或,都为原数
  2. 与本身自己异或,则为0
  3. 交换律和结合律(解决这道题的关键),你把整个循环的计算写成数学运算过程,你会发现要利用交换律,结合律,可以实现这道题的要求

所以,代码和结果如下 

啊啊做出来超级有成就感的!

    public static void main_func(String[] args) {
          int[] array = {1,2,2,1,5,4,5};
        System.out.println(func(array));
    }
    public static int func (int[] array){
        int num=0;
        for(int i=0;i<array.length;i++){
            num^=array[i];
        }
        return num;
    }
}

希望能帮到小伙伴

感谢阅读 ~

猜你喜欢

转载自blog.csdn.net/qq_63511424/article/details/123698294