[Leetcode] 136. Single Number

来源:互联网 发布:深圳市人口密度数据 编辑:程序博客网 时间:2024/04/28 22:18

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 XOR A = 0,且XOR运算是可交换的,于是,对于实例{2,1,4,5,2,4,1}就会有这样的结果:

(2^1^4^5^2^4^1) => ((2^2)^(1^1)^(4^4)^(5)) => (0^0^0^5) => 5

就把只出现了一次的元素(其余元素均出现两次)给找出来了,更general的做法要看single number ii

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



0 0