[leetcode] Single Number

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?

https://oj.leetcode.com/problems/single-number/

 

思路:所有元素异或之后所留下的即是。

 

public class Solution {
    public int singleNumber(int[] A) {
        if (A == null || A.length == 0)
            return 0;
        if (A.length == 1)
            return A[0];

        int n = A.length;
        int result = A[0];
        for (int i = 1; i < n; i++)
            result = result ^ A[i];

        return result;
    }

    public static void main(String[] args) {
        System.out.println(new Solution().singleNumber(new int[] { 1, 1, 2, 3,
                3, 4, 4, 0, 0 }));
    }
}

 

 第二遍记录:可以改的简洁点。

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

 

 

posted @ 2014-07-07 00:32  jdflyfly  阅读(145)  评论(0编辑  收藏  举报