LeetCode每日一题:单独一个数 1

问题描述

Given an array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

问题分析

这道题说的是数组A中每个数都是出现两次,只有一个数是出现一次的,在线性时间内找出只出现一次的数,而且不使用额外空间,
这题用异或来做:

  • 异或运算满足交换律,说明两两出现的数异或完就都变成0了
  • 两个相同的数异或为0
  • 0异或一个数等于这个数的本身
    有了这三条,我们只需循环异或一遍就可以得出结果了

代码实现

public int singleNumber(int[] A) {
        int result=0;
        for (int i = 0; i < A.length; i++) {
            result=result^A[i];
        }
        return result;
    }

你可能感兴趣的:(LeetCode每日一题:单独一个数 1)