421. Maximum XOR of Two Numbers in an Array

class Solution(object):
    def findMaximumXOR(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        max,mask=0,0
        
        for i in range(31,-1,-1): 
            mask|=(1<<i)
            prefix_set=set()
            for num in nums:
                prefix_set.add(num&mask)
            temp=max|(1<<i)
            for prefix in prefix_set:
                if temp^prefix in prefix_set:
                    max=temp
                    break
        return max
        
class Solution(object):
    def findMaximumXOR(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        answer=0
        for i in range(31,-1,-1):
            answer<<=1
            prefixes={num>>i for num in nums}
            answer+=any(answer^1^prefix in prefixes for prefix in prefixes)
        return answer
                 
             
            
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容