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

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

今天給你們分享一篇關於使用XOR(異或)運算找到數組中缺失的數的問題。面試

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

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

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

首先對數組進行排序,而後遍歷一遍數組,檢查數組中相鄰兩項的的差,若是差大於1,則找到缺失的數字。post

這是一種有效的算法。可是因爲涉及排序,會消耗額外的計算成本。因此問題在於如何在只遍歷一遍數組的狀況下找到缺失的數。spa

第一種解法

計算剩餘99個整數的和,以及0-99全部整數的總和,就能夠用0-99之間全部整數的總和減去數組中剩餘數的和來獲得缺乏的數。3d

第二種解法

經過對全部整數[0..99]的進行XOR,而後將獲得的結果對剩餘數組中全部項的進行異或。blog

更多詳細內容能夠查看原文。今天的文章就分享到這啦。排序

相關文章
相關標籤/搜索