我有一個具有正整數的數組。除此數組中的一個元素外,其他所有元素都沒有重複。找到唯一元素的方法是使用XOR位運算符,該運算符僅在其中一個元素爲1時返回1,否則返回false。按位異或操作符找到丟失的唯一ID
以下是代碼:
public class Bitter {
public static void main(String[] args) {
int[] deliveryIds = {34, 40, 2, 21, 50, 40, 34, 2, 50};
System.out.println(new Bitter().findUniqueDeliveryId(deliveryIds));
}
public int findUniqueDeliveryId(int[] deliveryIds) {
int uniqueDeliveryId = 0;
for(int i = 0; i < deliveryIds.length; i++) {
uniqueDeliveryId ^= deliveryIds[i];
}
return uniqueDeliveryId;
}
}
在該循環中,每個陣列中的整數與UNIQUEID異或從0開始。然後,0相異或34.其結果是然後XOR '用數組40中的下一個整數編輯,然後我們遍歷整個數組。
即使設置了斷點並一次檢查整行一行,我仍然無法理解,如何與uniqueId進行XOR(從值0開始)可以幫助我們在數組中找到非重複的整數?
不應該像40這樣的數字與自身異或(導致值爲0),以確認它是重複的。與此處不同的是,我們將數組中的第一個整數與0進行異或,並將結果與數組中的後續數進行異或運算。我錯過了什麼/
我想你的意思是說「除了這個數組中的一個元素之外,所有元素都有重複。 –