LeetCode 421. 数组中两个数的最大异或值

news2024/11/27 3:43:27

原题链接:https://leetcode.cn/problems/maximum-xor-of-two-numbers-in-an-array/description/?envType=daily-question&envId=2023-11-04

题目分析

异或且时间复杂度在nlogn内第一反应想到字典树,扫一遍存进字典树,然后遍历每个数,

对比当前位数i下,整个数组内是否有某个数的i位上和当前数的i位相异的,如果相异就能取1。高位优先,所以查出来的数会是最大的。

细节上没处理好,过了题但效率偏低

C++代码(字典树)

class Solution {
public:
    int idx = 0;
    int son[32*200000+5][2];
    void insert(string str){
        int p = 0;//指向树中哪一个节点
        for(int i=0;i<str.length();i++){
            int u = str[i]-'0';
            if(!son[p][u]) son[p][u] = ++idx;
            p = son[p][u];
        }
    }

    int to_decimal(string str){
        int res = 0;
        for(int i=0;i<=31;i++){
            if(str[i]-'0') res += pow(2,31-i);
        }
        return res;
    }
    int findMaximumXOR(vector<int>& nums) {
        int res = 0;
        memset(son,0,sizeof son);
        for(auto it:nums){
            bitset<32> binary(it);
            insert(binary.to_string());
        }

        for(auto it:nums){
            bitset<32>binary(it);
            string str = binary.to_string();
            string temp = "";
            int len = str.length();
            int p = 0;
            for(int i=0;i<len;i++){
                int x = str[i]-'0';
                if(!son[p][!x]){//相异不行,只能取相同
                    p = son[p][x];
                    temp += "0";
                }else{
                    p = son[p][!x];
                    temp += "1";
                }
            }
            res = max(res,to_decimal(temp));
        }
        return res;
    }
};

时间复杂度:O(nlogC)  C为数值大小

空间复杂度:O(nlogC)

实际运行出来效率不高,占的空间也比较大

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1170439.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CAM模型可视化(可解释)

模型的可解释性问题一直是个关注的热点。注意&#xff0c;本文所说的“解释”&#xff0c;与我们日常说的“解释”内涵不一样&#xff1a;例如我们给孩子一张猫的图片&#xff0c;让他解释为什么这是一只猫&#xff0c;孩子会说因为它有尖耳朵、胡须等。而我们让CNN模型解释为什…

yolov5简易使用

1.环境配置 从github上下载好yolov5源码后&#xff0c;根据requirement文件配置环境&#xff0c;使用conda新建一个仿真环境&#xff0c;接着使用 pip install -r requirements.txt 来安装环境&#xff0c;安装后首先运行detect.py 发现安装后的环境不能使用&#xff0c;报…

windows10系统-17-文献管理软件

参考诸多文献管理软件的优劣比较如何&#xff1f;你有哪些使用心得&#xff1f; 参考我愿称之为目前最好用的文献管理和阅读软件&#xff01;readpaper 1 文献总结 文献总结是非常重要的一项技能&#xff0c;不知道大家看完文献后有没有总结文献的习惯&#xff0c;有的话那挺…

【中国知名企业高管团队】系列57:康佳KONKA

今天开始&#xff0c;华研荟为大家介绍中国电视行业的知名企业&#xff0c;接下来三天介绍位于深圳的电视三巨头&#xff0c;这三巨头以电视机研发、生产和销售起步&#xff0c;2000左右生产过非智能手机&#xff0c;但是在互联网时代被小米们抢走了电视和手机的很大一部分市场…

大数据之LibrA数据库系统告警处理(ALM-12016 CPU使用率超过阈值)

告警解释 系统每30秒周期性检测CPU使用率&#xff0c;并把实际CPU使用率和阈值相比较。CPU使用率默认提供一个阈值范围。当检测到CPU使用率连续多次&#xff08;可配置&#xff0c;默认值为10&#xff09;超出阈值范围时产生该告警。 平滑次数为1&#xff0c;CPU使用率小于或…

The world,The Matrix and Big Model

黑客帝国&#xff0c;打开了The Matrix与现实世界的关系。今天&#xff0c;现实版的“The Matrix”已经开始逐渐浮现。ChatGPT&#xff0c;打开了这个入口。"The Matrix" 变成了“Big Model”。话不多说&#xff0c;上图。人类借助“Big Model”离开“洞穴”。 人与T…

2023年【危险化学品经营单位安全管理人员】复审考试及危险化学品经营单位安全管理人员模拟考试题库

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 危险化学品经营单位安全管理人员复审考试考前必练&#xff01;安全生产模拟考试一点通每个月更新危险化学品经营单位安全管理人员模拟考试题库题目及答案&#xff01;多做几遍&#xff0c;其实通过危险化学品经营单位…

ASO优化之iOS应用关键词的优化技巧2

关键词优化始终必须包括由App Store算法索引的所有元数据元素&#xff0c;所以我们要在关键词字段方面与其他元数据相结合。另外&#xff0c;确保转化率优化策略&#xff0c;是适合我们的关键词策略的。 1、每个关键词只能使用一次。 Apple的算法无论我们使用的频率如何&#…

加密的手机号,如何模糊查询?

前几天&#xff0c;知识星球中有位小伙伴&#xff0c;问了我一个问题&#xff1a;加密的手机号如何模糊查询&#xff1f; 我们都知道&#xff0c;在做系统设计时&#xff0c;考虑到系统的安全性&#xff0c;需要对用户的一些个人隐私信息&#xff0c;比如&#xff1a;登录密码…

基于 NGram 分词,优化 Es 搜索逻辑,并深入理解了 matchPhraseQuery 与 termQuery

基于 NGram 分词&#xff0c;优化 Es 搜索逻辑&#xff0c;并深入理解了 matchPhraseQuery 与 termQuery 前言问题描述排查索引库分词&#xff08;发现问题&#xff09;如何去解决这个问题&#xff1f;IK 分词器NGram 分词器使用替换 NGram 分词器后进行测试matchPhraseQuery 查…

vivado布局分析

1、高亮显示布局 1. 在“ Netlist ” &#xff08; 网表 &#xff09; 窗口中 &#xff0c; 选择要分析的层级。 2. 从弹出菜单中 &#xff0c; 选择“ Highlight Leaf Cells ” → “ Select a color ” &#xff08; 高亮叶节点单元 > 选择颜色 &#xff09; 。 3. …

【C语法学习】9 - fputs()函数

文章目录 1 函数原型2 参数3 返回值4 输出机制5 比较6 示例6.1 示例16.2 示例2 1 函数原型 fputs()&#xff1a;将str指向的内存空间中存储的字符串发送至指定流stream&#xff0c;函数原型如下&#xff1a; int fputs(const char *str, FILE *stream)2 参数 fputs()函数有两…

初谈Linux-Linux环境搭建(阿里云免费服务器+xshell)

文章目录 前言Linux环境搭建结尾 前言 Linux is not unix 本篇文章小编初谈Linux并搭建Linux环境&#xff08;阿里云免费服务器shell&#xff09; Linux Linux是一个开源的操作系统 环境搭建 1.点击阿里云ECS免费学生服务器 2.注册后完成学生认证 3.购买云服务器&#xf…

超详细shell学习笔记

shell笔记 一、Linux下的shell与内核1 什么是Shell?2 linux启动过程3 shell编程 二、变量与变量应用1 什么是变量&#xff1f;2 变量分类3 变量赋值格式4.变量命名方式5.变量声明6.变量引用7.变量清除8.变量只读9 内部参数变量10 常见环境变量11 变量应用14 字符串长度与截取1…

重生奇迹mu下载后仅仅只是挂机吗?

挂挂机、聊聊天&#xff0c;打打怪&#xff0c;如此简单、轻松的游戏或许有&#xff0c;但绝对不是重生奇迹mu&#xff01;因为重生奇迹mu挂机也不是那么容易&#xff0c;即便是多名高端玩家组队挂机&#xff0c;也有可能是全队惨灭&#xff0c;这样的情况时常发生在游戏中。 …

echarts 简单渐变折线图

渐变颜色多个折线图 import * as echarts from echarts/core // 看个人项目echart引入方式 options: {tooltip: {trigger: axis},yAxis: {type: value,name: 能耗&#xff1a;标准煤kg},legend: {icon: circle,itemHeight: 8,itemWidth: 8,top: 1%,left: center// selectedMo…

什么是机器学习中的正则化?

1. 引言 在机器学习领域中&#xff0c;相关模型可能会在训练过程中变得过拟合和欠拟合。为了防止这种情况的发生&#xff0c;我们在机器学习中使用正则化操作来适当地让模型拟合在我们的测试集上。一般来说&#xff0c;正则化操作通过降低过拟合和欠拟合的可能性来帮助大家获得…

基于jsp的采购管理系统的分析与实现

物资采购管理系统是针对内部而设计的&#xff0c;应用于的局域网&#xff0c;这样可以使得内部管理更有效的联系起来。企业采购管理系统是将IT技术用于企业采购信息的管理, 它能够收集与存储企业采购的档案信息&#xff0c;提供更新与检索企业采购信息档案的接口&#xff1b;提…

记录离线安装xlwings

有场景需要离线安装xlwings。 环境&#xff1a;win7 64位&#xff0c;python3.8.10-amd64。 首先安装python。 安装需要准备&#xff1a; 其中pywinn32解压如下&#xff1a; 安装python3.8.10&#xff0c;解压各类文件夹。 &#xff08;1&#xff09;首先安装pywin32-306.…

将python项目打包成exe可执行文件

auto-py-to-exe 有时候吧&#xff0c;想把自己的python程序打包成一个可执行文件。查询了一下可以使用auto-py-to-exe 来解决。 简介 Auto-py-to-exe是一个用于将Python脚本打包为可执行文件的开源工具。它提供了一个用户友好的图形界面&#xff0c;使用户能够轻松选择和配置…