1、給一組數,其中只有一個數是重復了奇數次,其余都重復了偶數次,如何找出奇數次的那個數
異或運算,復雜度O(n)
int x = a[0];for(int i = 1; i < a.leght; i++){x = x ^ a[i];}System.out.println(x);
2,上千萬條記錄,統(tǒng)計出重復記錄最多的前N條
內存用Hash表
數據Select top 10 A from TB group by A order by(count(A))
數據結構中的hash表,不是java中的Hash表
key1 ------ v1,v2,v3
key2 ------ v1,v2,v3,v4
key3 ------ v1,v2
key4 ------ v1
3、一個N個整數的無序數組,給你一個數sum,求出數組中是否存在兩個數,使他們的和為sum
Hash表,復雜度O(n)
Map<Integer,Integer> map = new HashMap<Integer,Integer>();int sum = 65;int key = 0;for(int i = 0; i < a.length; i++){key = sum - a[i];map.put(a[i],a[i]);if(map.contain(key)){System.out.println(key + ":" + a[i]);}}