今天給你們分享一篇關於使用XOR(異或)運算找到數組中缺失的數的問題。面試
在一次Javascript面試中,有這麼一個問題:算法
假設有一個由0到99(包含99)的整數組成的長度爲100的數組。從數組中隨機移除一個元素,獲得了一個長度爲99的數組,那麼請問如何找到所取出的數字是幾?(假設數組未排序)。
大多數面試者都是按照以下方法解答的:數組
首先對數組進行排序,而後遍歷一遍數組,檢查數組中相鄰兩項的的差,若是差大於1,則找到缺失的數字。post
這是一種有效的算法。可是因爲涉及排序,會消耗額外的計算成本。因此問題在於如何在只遍歷一遍數組的狀況下找到缺失的數。spa
計算剩餘99個整數的和,以及0-99全部整數的總和,就能夠用0-99之間全部整數的總和減去數組中剩餘數的和來獲得缺乏的數。3d
經過對全部整數[0..99]的進行XOR,而後將獲得的結果對剩餘數組中全部項的進行異或。blog
更多詳細內容能夠查看原文。今天的文章就分享到這啦。排序