亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

異或如何給出兩個數組中不同的數字?

異或如何給出兩個數組中不同的數字?

拉風的咖菲貓 2024-01-25 21:45:12
描述是:&ldquo;給定一個從 1 到 N 的有序數字序列??赡芷渲幸粋€數字被刪除,然后剩余的數字混合在一起。找到被刪除的數字。例子:The starting array sequence is [1,2,3,4,5,6,7,8,9]The mixed array with one deleted number is [3,2,4,6,7,8,1,9]Your function should return the int 5.如果沒有從數組中刪除數字并且與它沒有區別,則您的函數應該返回 int 0。請注意,N 可以是 1 或更?。ㄔ诤笠环N情況下,第一個數組將為 [])。&rdquo;我寫了一個簡單的答案:import java.util.*;? public class Kata {? ? public static int findDeletedNumber (int[] arr, int[] mixedArr) {??? ? ? Arrays.sort(mixedArr);? ? ? for(int i = 0; i < arr.length; i++){? ? ? ? try{? ? ? ? ? if(arr[i] != mixedArr[i]){? ? ? ? ? ? return arr[i];? ? ? ? ? }? ? ? ? }catch(ArrayIndexOutOfBoundsException e) {? ? ? ? ? return arr[i];? ? ? ? }? ? ? }? ? ? return 0;? ? }}我正在閱讀其他人的答案,發現一個我覺得很難深入理解的答案:import java.util.Arrays;public class Kata {? ? public static int findDeletedNumber(int[] arr, int[] mixedArr) {? ? ? ? return Arrays.stream(arr).reduce((a, b) -> a ^ b).orElse(0) ^ Arrays.stream(mixedArr).reduce((a, b) -> a ^ b).orElse(0);? ? }}我想得到一些幫助,如果有人關心并有耐心寫下解釋和/或跟蹤,將會有所幫助。目前我可以看到答案,但我不明白。??
查看完整描述

1 回答

?
慕哥9229398

TA貢獻1877條經驗 獲得超6個贊

XOR(異或)真值表


X   Y    result

0   0    0

0   1    1

1   0    1

1   1    0

什么意思X^Y?讓我們看一個例子,5^6


dec       bin


5     =  101

6     =  110

------------------ xor

3     =  011

對兩個數字進行異或只是將兩個數字轉換為二進制并應用真值表中的規則。


觀察上表,不難看出 X^X = 0 for any integer X


5     =  101

5     =  101

------------------ xor

0     =  000

和X^0 = X


5     =  101

0     =  000

------------------ xor

5     =  101

給定兩個數組,對兩個數組中的每個元素進行異或,結果意味著類似


(1 ^ 2 ^ 3 ^ 4 ^ 5 ^ 6 ^ 7 ^ 8 ^ 9) ^ (3 ^ 2 ^ 4 ^ 6 ^ 7 ^ 8 ^ 1 ^ 9)

因為X^Y = Y^X你X^Y^Z = (X^Y)^Z = X^(Y^Z)可以將上面的內容重新排列為


(1 ^ 1) ^ ( 2 ^ 2) ^ (3 ^ 3) ^ (4 ^ 4)  ^ (5) ^ (6 ^ 6) ^ (7 ^ 7) ^ (8 ^ 8) ^ (9 ^ 9) 

除了缺少的數字(即 5)之外,一切都相互抵消。


查看完整回答
反對 回復 2024-01-25
  • 1 回答
  • 0 關注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號