博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【leetcode】421. Maximum XOR of Two Numbers in an Array
阅读量:6704 次
发布时间:2019-06-25

本文共 1181 字,大约阅读时间需要 3 分钟。

题目如下:

解题思路:本题的难点在于O(n)的复杂度。为了减少比较的次数,我们可以采用字典树保存输入数组中所有元素的二进制的字符串。接下来就是找出每个元素的异或的最大值,把需要找最大值的元素转成二进制表达后逐位在字典树中查找,查找的时候优先匹配反码,反码不存在则用原码。

代码如下:

class Solution(object):    def findMaximumXOR(self, nums):        """        :type nums: List[int]        :rtype: int        """        MAX_LEN = 31        root = {}        for i in nums:            node = root            i = '0'*(MAX_LEN-len(bin(i)[2:])) + bin(i)[2:]            for b in i:                if b not in node:                    node[b] = {}                node = node[b]        #print root['0']['0']['0']['1']['1']        res = 0        for i in nums:            path = ''            i = '0' * (MAX_LEN - len(bin(i)[2:])) + bin(i)[2:]            node = root            for b in i:                if len(node) == 0:                    break                ib = '1' if b == '0' else '0'                if ib in node:                    node = node[ib]                    path += ib                else:                    node = node[b]                    path += b            #print i,path,int(i,2),int(path,2)            res = max(res,int(i,2)^int(path,2))        return res

 

转载于:https://www.cnblogs.com/seyjs/p/9713475.html

你可能感兴趣的文章
SQLPlus环境设置
查看>>
如何解决crontab脚本执行sudo
查看>>
大数据应用之HBase数据插入性能优化之多线程并行插入测试案例
查看>>
phalcon的nginx重写实现模仿apache下的.htaccess
查看>>
使用用户自定义的辅助实例执行基于表空间的时间点恢复
查看>>
Mybatis XML 映射配置文件
查看>>
MySQL深入03-锁-事务-GTID
查看>>
HTML学习日记(1-基础)
查看>>
如何查看mysql的用户及授权
查看>>
JAVA jacob office转换pdf代码
查看>>
Java 命令行运行参数大全
查看>>
Oracle学习之路-SQL篇-连接查询
查看>>
我的友情链接
查看>>
Windows 7打开.hlp文件
查看>>
Hadoop 完全分布式搭建指南
查看>>
从比特币的疯狂引发出的区块链热潮
查看>>
mongoDB
查看>>
为什么SD-WAN现在正在起飞
查看>>
大数据需要学什么,如何从零开始规划大数据学习之路!
查看>>
服务器双ip部署分布式系统解决办法之一
查看>>