LeetCode 421. 数组中两个数的最大异或值(Trie树)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 421. 数组中两个数的最大异或值(Trie树)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 題目
給定一個非空數組,數組中元素為 a0, a1, a2, … , an-1,其中 0 ≤ ai < 231 。
找到 ai 和aj 最大的異或 (XOR) 運算結果,其中0 ≤ i, j < n 。
你能在O(n)的時間解決這個問題嗎?
示例:輸入: [3, 10, 5, 25, 2, 8]輸出: 28解釋: 最大的結果是 5 ^ 25 = 28.來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/maximum-xor-of-two-numbers-in-an-array
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. Tries樹
- 題目要求O(n)時間復雜度,兩兩異或O(n2)
- 考慮將每個數字的二進制位插入Trie樹(從高位往低位插入)O(n)
- 再遍歷每個數字bit,貪心從trie樹的異或最大路徑往下走,得到一個val,取val的最大值,O(n)時間復雜度
總結
以上是生活随笔為你收集整理的LeetCode 421. 数组中两个数的最大异或值(Trie树)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 1019. 链表中的下
- 下一篇: 基于sklearn的LogisticRe