3 回答

慕神8447489
TA貢獻1780條經驗 獲得超1個贊
我們可以使用比求和更安全的XOR操作,因為在編程語言中,如果給定的輸入很大,則可能會溢出并給出錯誤的答案。
在尋求解決方案之前,請知道A xor A = 0。因此,如果我們對兩個相同的數字進行XOR運算,則該值為0。
現在,對數組中存在的元素進行XORing [1..n]會取消相同的數字。因此,最后我們將得到缺少的號碼。
// 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.
添加回答
舉報
0/150
提交
取消