的運動了解的運行時間分析,下面是我在尋找一個答案的問題:從CLRS
數組A [1個... N]包含所有從0到n的整數只有一個除外。通過使用輔助數組B [0 ... n]來記錄哪些數字出現在A中,可以很容易地確定O(n)時間中缺失的 整數。但是,在這個 問題中,我們無法訪問整個整數在一個單一的操作。 A的元素爲 ,用二進制表示,我們唯一可用來訪問它們的操作是「獲取A [i]的第j位」,其中 需要恆定的時間。 顯示如果我們只使用這個操作,我們仍然可以在O(n)時間內確定缺失的整數。
我有這樣的想法: 如果我沒有上面的提取限制,我會採取所有的數字,並將它們異或。然後將結果與1..n中的所有數字進行異或運算。結果會是我的答案。 同樣在這個問題中,我可以在數組中的所有元素之間以log(n + 1)位的距離重複XOR不同數字的位,然後將它們與元素1 ... n異或,但複雜性出來在我看來是O(nlogn)。
如何實現O(n)的複雜性? 感謝