Leetcode 2935. Maximum Strong Pair XOR II
- Leetcode 2935. Maximum Strong Pair XOR II
- 1. 解题思路
- 2. 代码实现
- 题目链接:2935. Maximum Strong Pair XOR II
1. 解题思路
这一题又是一个限制条件下找“最大值”的问题,不过这里的最大值是XOR之后的最大值。
而要求XOR之后结果的最大值,事实上我们只要找到这个数的位反结果即可,因此,我们通过一个trie树事实上很快就能找到这个数。而关于trie树的内容,我们之前已经写过了一个博客(经典算法:Trie树结构简介)对其进行介绍过了,如果有不了解的同学可以直接跳转去快速了解一下,这里就不展开赘述了。
剩下的问题就是如何来处理这个限制条件,题中的限制条件要求:
∣ x − y ∣ ≤ m i n ( x , y ) |x-y| \leq \mathop{min}(x, y) ∣x−y∣≤min(x,y)
不妨设 x ≤ y x \leq y x≤y,那么限制条件就是 y ≤ 2 x y \leq 2x y≤2x。
因此,我们对原数组去重排序之后,就可以通过一个滑动窗口来确保每一次query过程中,trie树当中所有的数字均可满足上述限制条件。
只不过,这里我们需要特殊一点实现一个trie树的元素删除操作。
2. 代码实现
给出python代码实现如下:
class Trie:def __init__(self):self.trie = {}def add(self, num):trie = self.triefor digit in num:trie = trie.setdefault(digit, {})trie["eos"] = numdef find(self, num):trie = self.triefor digit in word:if digit not in trie:return Falsetrie = trie[digit]return "eos" in triedef find_closest(self, num):trie = self.triefor digit in num:if digit not in trie:digit = "1" if digit == "0" else "0"trie = trie[digit]return trie["eos"]def remove(self, num):tries = []trie = self.triefor digit in num:tries.insert(0, (digit, trie))trie = trie[digit]for digit, trie in tries:trie.pop(digit)if len(trie) > 0:breakreturnclass Solution:def maximumStrongPairXor(self, nums: List[int]) -> int:def num2digit(num):ans = bin(num)[2:]return ans.rjust(20, "0")def digit2num(digits):ans = 0for digit in digits:ans = ans * 2 + int(digit)return ansdef reverse(digits):return "".join(str(1-int(d)) for d in digits)trie = Trie()nums = sorted(set(nums))r, n = 0, len(nums)ans = 0for num in nums:while r < n and nums[r] <= 2 * num:digits = num2digit(nums[r])trie.add(digits)r += 1digits = num2digit(num)tgt = reverse(digits)ret = trie.find_closest(tgt)ret = digit2num(ret)ans = max(ans, ret^num)trie.remove(digits)return ans
提交代码评测得到:耗时4674ms,占用内存79.6MB。
相关文章:
Leetcode 2935. Maximum Strong Pair XOR II
Leetcode 2935. Maximum Strong Pair XOR II 1. 解题思路2. 代码实现 题目链接:2935. Maximum Strong Pair XOR II 1. 解题思路 这一题又是一个限制条件下找“最大值”的问题,不过这里的最大值是XOR之后的最大值。 而要求XOR之后结果的最大值&#x…...
[直播自学]-[汇川easy320]搞起来(4)看文档 查找设备(续)
2023.11.12 周六 19:05 补充一下关于以太网查找设备,如果设置如下: 然后点击测试: 点击ping 如果设置如下: 测试和ping和上图一样。 这就设计的有点不大好了! 另…...
WebSphere Liberty 8.5.5.9 (四)
WebSphere Liberty 8.5.5.9 (四) [WebSphere Liberty 8.5.5.9]Linux 环境 ~$ unzip wlp-webProfile7-java8-linux-x86_64-8.5.5.9.zip ./ ~$ mkdir wlp-webProfile7-java8-8559 ~$ mv wlp ./wlp-webProfile7-java8-8559启动 WebSphere Liberty 8.5.5.9 服务 ~$ cd /home/tes…...
UE特效案例 —— 角色刀光
目录 一,环境配置 二,场景及相机设置 三,效果制作 刀光制作 地裂制作 击打地面炸开制作 一,环境配置 创建默认地形Landscape,如给地形上材质需确定比例;添加环境主光源DirectionalLight,设…...
11. EPIC定时器
11. EPIC定时器 EPIT定时器简介EPIT定时器结构分析EPIT 定时器相关寄存器EPITx_CREPITx_SREPITx_LR 加载寄存器EPITx_CMPR 比较寄存器EPITx_CNR 计数寄存器 EPIT 配置步骤 例程代码编写bsp_epittimer.hbsp_epittimer.cmain.c EPIT定时器简介 EPIT定时器是增强的周期中断定时器…...
git-bash配置代理
git-bash命令提交执行命令: "git push origin main"时发生错误: “$ git push origin main fatal: unable to access ‘https://github.com/satadriver/locust_server.git/’: Failed to connect to github.com port 443 after 21035 ms: Couldn’t connect to serve…...
【ElasticSearch系列-07】ES的开发场景和索引分片的设置及优化
ElasticSearch系列整体栏目 内容链接地址【一】ElasticSearch下载和安装https://zhenghuisheng.blog.csdn.net/article/details/129260827【二】ElasticSearch概念和基本操作https://blog.csdn.net/zhenghuishengq/article/details/134121631【三】ElasticSearch的高级查询Quer…...
JavaWeb Day09 Mybatis-基础操作02-XML映射文件动态SQL
目录 Mybatis动态SQL介绍编辑 一、案例 ①Mapper层 ②测试类 ③EmpMapper.xml ④结果 二、标签 (一)if where标签 ①EmpMapper.xml ②案例 ③总结 (二)foreach标签 ①SQL语句 ②Mapper层 ③EmpMapper.xml ④…...
CV学习基础
脸部检测是基于图像的明暗变化模式进行判断,需要将图像先进行灰度化处理 马赛克处理需先将图像缩小然后夸大回原尺寸。 保存训练好的算法用joblib 进行以下操作时已经使用cv2.cvtColor()完成了灰度化 图像平滑化(模糊处理):cv…...
设计模式之禅之设计模式-原型模式
设计模式之禅之设计模式-原型模式 一:原型模式的定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型模式(Prototype Pattern)的简单程度仅次于单例模式和迭代器模式。正是由于简单,使用的场景才非常地多。 原型模式的核心是一…...
Spring的循环依赖问题
文章目录 1.什么是循环依赖2.代码演示3.分析问题4.问题解决5.Spring循环依赖6. 疑问点6.1 为什么需要三级缓存6.2 没有三级缓存能解决吗?6.3 三级缓存分别什么作用 1.什么是循环依赖 上图是循环依赖的三种情况,虽然方式有点不一样,但是循环依…...
RT-DETR算法改进:更换损失函数DIoU损失函数,提升RT-DETR检测精度
💡本篇内容:RT-DETR算法改进:更换损失函数DIoU损失函数 💡本博客 改进源代码改进 适用于 RT-DETR目标检测算法(ultralytics项目版本) 按步骤操作运行改进后的代码即可🚀🚀🚀 💡改进 RT-DETR 目标检测算法专属 文章目录 一、DIoU理论部分 + 最新 RT-DETR算法…...
【ICE】2:基于webrtc的 ice session设计及实现
工厂函数:CreateICESession_t 外部声明,sdk内部实现。创建IICESession :外部可见,内部也可见 /// Factory function prototype. How you get this factory will depend on how you are linking with /// this code. typedef IICESession *( *CreateICESession_t )( const…...
Vue组件传
跟禹神学vue--总结 1 父组件给子组件传递参数--props传参 (1)父组件中准备好数据 data() {return {todos:[{id:001,title:01,done:true},{id:002,title:02,done:false},{id:003,title:03,done:true}]} } (2)父组件中引入子组件…...
轻量封装WebGPU渲染系统示例<25>- 颜色附件数据更新替换(源码)
当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/ColorAttachmentReplace.ts 此示例基于此渲染系统实现,当前示例TypeScript源码如下: const rttTex0 { diffuse: { uuid: rtt0, rttTexture: {} } }; c…...
c语言练习第11周(1~5)
数列 1 1 2 3 5 8 13 21 ... 被称为斐波纳数列。 输入若干个正整数N,输出这个序列的前 N 项的和。 题干数列 1 1 2 3 5 8 13 21 ... 被称为斐波纳数列。 输入若干个正整数N,输出这个序列的前 N 项的和。输入样例3 5 4 1输出样例…...
阿里云国际站服务器如何升级内存容量?
阿里云服务器是阿里云供给的计算服务,它具有高效安稳、可扩展性强等特色,适用于各种应用环境。在运用阿里云服务器的过程中,或许会遇到内存容量缺乏的状况,这时候就需求晋级内存容量。那么,阿里云服务器怎么晋级内存容…...
神经网络(第二周)
一、简介 1.1 需求预测示例 1.1.1 逻辑回归算法 根据价格预测商品是否畅销。特征:T恤的价格;分类:销售量高1/销售量低0;使用逻辑回归算法进行分类,拟合效果如下图所示: 1.1.2 神经元和神经网络 将逻辑回…...
《网络协议》04. 应用层(DNS DHCP HTTP)
title: 《网络协议》04. 应用层(DNS & DHCP & HTTP) date: 2022-09-05 14:28:22 updated: 2023-11-12 06:55:52 categories: 学习记录:网络协议 excerpt: 应用层、DNS、DHCP、HTTP(URI & URL,ABNF…...
springboot自己添加的配置文件没有绿色叶子问题
在IntelliJ IDEA中,不同文件类型通常会有不同的图标,以便更容易识别它们。如果您的自己添加的 .properties 文件和项目中自动生成的 .properties 文件显示不同的图标,这可能是因为它们被识别为不同的文件类型。 通常情况下,Intel…...
日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...
02.运算符
目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&:逻辑与 ||:逻辑或 !:逻辑非 短路求值 位运算符 按位与&: 按位或 | 按位取反~ …...
Vue3 PC端 UI组件库我更推荐Naive UI
一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用,前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率,还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库(Naive UI、Element …...
