在高手那裡學到一招~很巧妙~
計數排序
建立一個int c [1 000 000]的數組,初始值當然都是0
由于隻有一個數字出現了兩次,将這個數值做為新數組的下标(c[old[i]],将新數組的數值++,如果新數組的數值==2,很好,得到了這個數olds[i]。
原來的數組 int olds[]
新數組 int new[] = new int [1 000 000]
for(int old : olds){
new[old] ++;
if(new[old]==2)
return old;
}
缺點:如果olds數組内的數值範圍太大,new數組需要更多的空間
該算在原數組内數值範圍較小時效率不錯!