給定一個數組找出數組中唯一一個不重複的元素,要求只能遍歷一次,不能使用額外的空間,怎麼實現?
首先我回反問下數組中重複元素是相鄰的嗎?
如果是相鄰的可以用異或運算,一個數異或它本身是0
例如 0^1 = 1 1^0=1,0^0= 01^1=0 只有在兩個比較的位不同時其結果是1,否則結果爲0
數組元素是[1,1,2,3,3,4,4,5,5]
用php代碼實現
function NumberOf1($arr){
$res = -1;
$len = count($arr);
$res = $arr[0];
for($i=1;$i<$len;$i++){
$res = $res ^ $arr[$i];
}
return $res;
}
結果輸出2
謝謝,all!