3 回答

TA貢獻(xiàn)1780條經(jīng)驗 獲得超1個贊
我們可以使用比求和更安全的XOR操作,因為在編程語言中,如果給定的輸入很大,則可能會溢出并給出錯誤的答案。
在尋求解決方案之前,請知道A xor A = 0。因此,如果我們對兩個相同的數(shù)字進(jìn)行XOR運算,則該值為0。
現(xiàn)在,對數(shù)組中存在的元素進(jìn)行XORing [1..n]會取消相同的數(shù)字。因此,最后我們將得到缺少的號碼。
// Assuming that the array contains 99 distinct integers between 1..99
// and empty slot value is zero
int XOR = 0;
for(int i=0; i<100; i++) {
if (ARRAY[i] != 0) // remove this condition keeping the body if no zero slot
XOR ^= ARRAY[i];
XOR ^= (i + 1);
}
return XOR;
//return XOR ^ ARRAY.length + 1; if your array doesn't have empty zero slot.
添加回答
舉報