1. 程式人生 > >【ShareCode】不錯的技術文章 -- 如何使用異或(XOR)運算找到陣列中缺失的數?

【ShareCode】不錯的技術文章 -- 如何使用異或(XOR)運算找到陣列中缺失的數?

如何使用異或(XOR)運算找到陣列中缺失的數?

今天給大家分享一篇關於使用XOR(異或)運算找到陣列中缺失的數的問題。

在一次Javascript面試中,有這麼一個問題:

假設有一個由0到99(包含99)的整陣列成的長度為100的陣列。從陣列中隨機移除一個元素,得到了一個長度為99的陣列,那麼請問如何找到所取出的數字是幾?(假設陣列未排序)。

大多數面試者都是按照如下方法解答的:

首先對陣列進行排序,然後遍歷一遍陣列,檢查陣列中相鄰兩項的的差,如果差大於1,則找到缺失的數字。

這是一種有效的演算法。但是由於涉及排序,會消耗額外的計算成本。所以問題在於如何在只遍歷一遍陣列的情況下找到缺失的數。

第一種解法

計算剩餘99個整數的和,以及0-99所有整數的總和,就可以用0-99之間所有整數的總和減去陣列中剩餘數的和來得到缺少的數。

第二種解法

通過對所有整數[0..99]的進行XOR,然後將得到的結果對剩餘陣列中所有項的進行異或。

更多詳細內容可以檢視原文。今天的文章就分享到這啦。