您当前的位置: 首页 >  liyatjj leetcode

LeetCode最大的异或

liyatjj 发布时间:2022-10-11 09:31:53 ,浏览量:6

剑指 Offer II 067. 最大的异或

给你一个整数数组 nums ,返回 nums[i] XOR nums[j] 的最大运算结果,其中 0 ≤ i ≤ j < n 。

输入:nums = [3,10,5,25,2,8] 输出:28 解释:最大运算结果是 5 XOR 25 = 28.

来源:LeetCode

利用字典树进行解题。

将每个元素转换成二进制位,从高到底依次表现在字典树上,然后对字典树就行搜索

当遇到节点是0的时候,由于进行异或操作,下一个最好选择1; 当遇到节点是1的时候,由于进行异或操作,下一个最好选择0;

由于将元素转换成二进制,所以只可能是0或者1,所以该字典树是一个二叉树。

当前是左侧节点,当往右孩子节点走,那就加上层数2+1,否则就是x2; 当前是右侧节点,当往左孩子节点走,那就加上层数2+1,否则就是x2;

最后返回res。

当然首先要定义一个字典树的类。

class Solution {

    Trie root=new Trie();
    static final int high_bit=30;
    public int findMaximumXOR(int[] nums) {

        int len=nums.length,max=0;
        int res=0;
        for(int i=1;i=0;i--)
        {
            int bit=(num>>i) & 1;
            if(bit==0)
            {
                if(cur.left==null)
                {
                    cur.left=new Trie();
                    
                }
                cur=cur.left;
            }
            else{
                if(cur.right==null)
                {
                    cur.right=new Trie();
                    
                }
                cur=cur.right;
            }
        }
    } 
    public int check(int num)
    {
        int res=0;
        Trie cur=root;
        for(int i=high_bit;i>=0;i--){
            int bit=(num>>i) & 1;
            if(bit==0)
            {
                if(cur.right!=null)
                {
                    cur=cur.right;
                    res=res*2+1;
                }
                else{
                    cur=cur.left;
                    res=res*2;
                }
            }
            else{
                if(cur.left!=null)
                {
                    cur=cur.left;
                    res=res*2+1;
                }
                else{
                    cur=cur.right;
                    res=res*2;
                }
            }
        }
        return res;
    }    
}
class Trie{
        Trie left=null;
        Trie right=null;
    }
关注
打赏
1688896170
查看更多评论

liyatjj

暂无认证

  • 6浏览

    0关注

    99博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.3062s