Javaのアルゴリズム回答

1、自身の答え

public class Text {
    public static void main(String[] args) {
        int[] A = new int[]{1,5,8,8,9,2,5,2,3,1,3};
        int i = new Text().singleNumber(A);
        System.out.println(i);
    }
    /**
     * @param A: An integer array
     * @return: An integer
     */
    public int singleNumber(int[] A) {
        Set<Integer> set = new HashSet<>();
        for (int i = 0;i<A.length ;i++ ){
            boolean flag = set.add(A[i]);
            if (!flag) {
                set.remove(A[i]);
            }
        }
        Iterator<Integer> iterator = set.iterator();
        return iterator.next();
    }
}    

良い答え

public class Text {
    public static void main(String[] args) {
        int[] A = new int[]{1,5,8,8,9,2,5,2,3,1,3};
        int i = new Text().singleNumber(A);
        System.out.println(i);
    }
    /**
     * @param A: An integer array
     * @return: An integer
     */
    public int singleNumber(int[] A) {
        if(A == null || A.length == 0) {
            return -1;
        }
        int rst = 0;
        for (int i = 0; i < A.length; i++) {
            rst ^= A[i];
        }
        return rst;
    }
}

解釈:XOR演算、1と異なる、同じ0、同じ番号0のいずれかである(すなわち、0000 0000)、例えば00000101 0 XOR演算と、単一の番号、同じ戻り0、異なるリターン1、すなわち数自体、トラバース取得結果、O(N)の時間計算量を返し

おすすめ

転載: blog.csdn.net/qq_36997245/article/details/93383760