posts - 403, comments - 310, trackbacks - 0, articles - 7
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          問(wèn)題:
          給定n個(gè)32位無(wú)符號(hào)整數(shù),求出其中異或結(jié)果最大的兩個(gè)整數(shù)。

          例如
          給定1, 2, 3, 4, 0xFFFFFFFE
          1 XOR 0xFFFFFFFE的結(jié)果最大

          這題網(wǎng)上討論還不少,O(n logn)的方法很容易想,按二進(jìn)制值從高到低劃分就行了。
          這里有一個(gè)思路很清晰的O(n)的做法,用了字典樹(shù)
          http://discuss.joelonsoftware.com/default.asp?interview.11.614716

          首先建立一棵深度為32的二叉樹(shù),結(jié)點(diǎn)值為0/1,每個(gè)整數(shù)對(duì)應(yīng)其中的一個(gè)葉子結(jié)點(diǎn),這樣一共有n個(gè)葉子。

          接下來(lái),對(duì)于任一個(gè)整數(shù)x,先取反,m = ~x
          在二叉樹(shù)中找到和x異或后值最大的數(shù)(根據(jù)二進(jìn)制值的各位從樹(shù)根往下跑就行了,不過(guò)給出的代碼有點(diǎn)問(wèn)題)
          找這個(gè)值在O(1)內(nèi)就能完成,然后求出最大的

          O(n)


          評(píng)論

          # re: 求n個(gè)32位無(wú)符號(hào)整數(shù)中異或后值最大的兩個(gè)數(shù)  回復(fù)  更多評(píng)論   

          2008-04-12 10:51 by 豆抓搜索
          學(xué)習(xí)..http://www.douzhua.com

          # re: 求n個(gè)32位無(wú)符號(hào)整數(shù)中異或后值最大的兩個(gè)數(shù)  回復(fù)  更多評(píng)論   

          2008-05-04 10:42 by ZelluX
          發(fā)現(xiàn)這個(gè)復(fù)雜度其實(shí)有問(wèn)題,因?yàn)?2位無(wú)符號(hào)整數(shù)最多也就2^32次個(gè),樹(shù)的深度自然是個(gè)常數(shù)級(jí)別的,囧

          # re: 求n個(gè)32位無(wú)符號(hào)整數(shù)中異或后值最大的兩個(gè)數(shù)[未登錄](méi)  回復(fù)  更多評(píng)論   

          2008-10-28 14:09 by dave
          ZelluX,請(qǐng)你重新解釋下O(n logn)和Trie的解法,或者提供相關(guān)鏈接。給出的鏈接已經(jīng)失效。非常感謝。

          # re: 求n個(gè)32位無(wú)符號(hào)整數(shù)中異或后值最大的兩個(gè)數(shù)[未登錄](méi)  回復(fù)  更多評(píng)論   

          2008-10-28 20:09 by dave
          已經(jīng)明白Trie的解法,請(qǐng)博主說(shuō)說(shuō)O(n logn)的方法吧。

          # re: 求n個(gè)32位無(wú)符號(hào)整數(shù)中異或后值最大的兩個(gè)數(shù)  回復(fù)  更多評(píng)論   

          2008-12-05 17:00 by wzcsoft
          字典樹(shù)的方法實(shí)際上是O(n*k) k=32

          實(shí)際上不一定比O(nlgn)好,lgn往往小于32
          主站蜘蛛池模板: 新乡市| 高安市| 洛阳市| 大丰市| 淳安县| 兴化市| 乌兰县| 盐源县| 古蔺县| 繁峙县| 峨眉山市| 济阳县| 咸宁市| 盐源县| 滦南县| 凉山| 克什克腾旗| 土默特左旗| 河津市| 南郑县| 蓬安县| 武陟县| 阿拉尔市| 若羌县| 永寿县| 蓝田县| 中方县| 耒阳市| 蛟河市| 新乐市| 大埔县| 建昌县| 嘉兴市| 汶川县| 宜良县| 涞水县| 利川市| 花莲市| 页游| 武平县| 修武县|