面試題40作者說的異或到底是咋回事

異或的性質(zhì)是不一樣則為1,那放在本題中該怎么理解呢?這個(gè)問題在理解上的難處是異或是一個(gè)二元運(yùn)算,可是解析中沒有明確說明誰跟誰進(jìn)行異或這讓我很頭疼。

我的理解是因?yàn)橄嗤臄?shù)值會(huì)在異或的過程中互相抵消最后剩下的就是那個(gè)惟一的元素,當(dāng)然這是針對(duì)只有一個(gè)元素是惟一的而其他的都是成對(duì)出現(xiàn)的那種。

那現(xiàn)在數(shù)組中惟一的元素不止一個(gè),作者就想能不能把數(shù)組拆成兩個(gè)子數(shù)組,其中每個(gè)子數(shù)組都僅包含一個(gè)惟一的元素。

所以他說的這個(gè)異或的過程是第一個(gè)元素異或第二個(gè)元素,其結(jié)果再去異或第三個(gè)元素,以此類推。

那么關(guān)鍵是怎么進(jìn)行分組。因?yàn)檫@兩個(gè)惟一的元素肯定不同,它們異或的結(jié)果肯定不為0,從而至少有一位是1,。作者挑選出從左到右第一個(gè)1的位置。以數(shù)組中元素這一位是不是1為標(biāo)準(zhǔn)分成兩組。那問題來了,為什么這樣分,那兩個(gè)惟一的元素不會(huì)分到同一組中呢?那是因?yàn)閿?shù)組中元素的異或結(jié)果最終是這兩個(gè)唯一元素的異或結(jié)果,而它們那一位之所以為1是由于它們的那一位不同,這是異或的運(yùn)算性質(zhì)決定的,所以它倆肯定不會(huì)被分配到同一組中去。

那就OK了,此面試題解決了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,840評(píng)論 18 399
  • 指針是C語言中廣泛使用的一種數(shù)據(jù)類型。 運(yùn)用指針編程是C語言最主要的風(fēng)格之一。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu); ...
    朱森閱讀 3,619評(píng)論 3 44
  • 為什么要選擇在項(xiàng)目配置多數(shù)據(jù)源呢? 多數(shù)據(jù)源設(shè)計(jì)一般應(yīng)用到中大型的項(xiàng)目中,項(xiàng)目關(guān)聯(lián)的業(yè)務(wù)性比較復(fù)雜,使用的數(shù)據(jù)庫(kù)比...
    恒宇少年閱讀 50,766評(píng)論 19 45
  • HTTP 全稱是 Hyper Text Transfer Protocol 即:超文本傳輸協(xié)議HTTP 是應(yīng)用層協(xié)...
    chile閱讀 338評(píng)論 1 0
  • 從完美到第一個(gè)裂痕 從第一個(gè)裂痕到第二個(gè)裂痕 所產(chǎn)生的疼痛 不是一個(gè)量級(jí)了 當(dāng)內(nèi)心真正接受和原諒第一個(gè)裂痕的時(shí)刻 ...
    Faithopelove閱讀 196評(píng)論 0 1

友情鏈接更多精彩內(nèi)容