首页 > 其他分享 >【竞赛题】找出强数对的最大异或值 I

【竞赛题】找出强数对的最大异或值 I

时间:2023-11-12 11:32:12浏览次数:27  
标签:XOR nums 30 异或 竞赛题 100 强数

1题目: 

给你一个下标从 0 开始的整数数组 nums 。如果一对整数 x 和 y 满足以下条件,则称其为 强数对 :

|x - y| <= min(x, y)
你需要从 nums 中选出两个整数,且满足:这两个整数可以形成一个强数对,并且它们的按位异或(XOR)值是在该数组所有强数对中的 最大值 。

返回数组 nums 所有可能的强数对中的 最大 异或值。

注意,你可以选择同一个整数两次来形成一个强数对。

示例 1:

输入:nums = [1,2,3,4,5]
输出:7
解释:数组 nums 中有 11 个强数对:(1, 1), (1, 2), (2, 2), (2, 3), (2, 4), (3, 3), (3, 4), (3, 5), (4, 4), (4, 5) 和 (5, 5) 。
这些强数对中的最大异或值是 3 XOR 4 = 7 。
示例 2:

输入:nums = [10,100]
输出:0
解释:数组 nums 中有 2 个强数对:(10, 10) 和 (100, 100) 。
这些强数对中的最大异或值是 10 XOR 10 = 0 ,数对 (100, 100) 的异或值也是 100 XOR 100 = 0 。
示例 3:

输入:nums = [5,6,25,30]
输出:7
解释:数组 nums 中有 6 个强数对:(5, 5), (5, 6), (6, 6), (25, 25), (25, 30) 和 (30, 30) 。
这些强数对中的最大异或值是 25 XOR 30 = 7 ;另一个异或值非零的数对是 (5, 6) ,其异或值是 5 XOR 6 = 3 。

提示:

1 <= nums.length <= 50
1 <= nums[i] <= 100

 2思路: 

根据题意模拟,循环遍历,找出所有强数对,然后返回最大的强数对。

 3java代码: 

class Solution {
    public int maximumStrongPairXor(int[] nums) {
        int res = 0;
        for(int i=0;i<nums.length-1;i++) {
            for(int j=i;j<nums.length;j++) {
                if(isStrongPair(nums[i], nums[j])) {
                    res = Math.max(res, nums[i]^nums[j]);
                }
            }
        }
return res;
    }
    
    private boolean isStrongPair(int n1, int n2) {
        return Math.abs(n1-n2)<=Math.min(n1, n2);
    }
}


标签:XOR,nums,30,异或,竞赛题,100,强数
From: https://blog.51cto.com/u_6813689/8327347

相关文章

  • 异或问题合集
    评价:我有异或症。收集了一些跟异或相关的trick,主要是以题目的形式放出来,做到了新的会再加。由于本人不太会线性基,正在考虑要不要改成01-Trie学习笔记,相关题目暂时应该是没有,主要考虑异或本身的性质。P4551最长异或路径题目链接设\(dis_u\)表示根到\(u\)路径上所有边......
  • 【题解 P8763】[蓝桥杯 2021 国 ABC] 异或变换
    同楼上dalao做法:#include<iostream>#include<algorithm>#include<cstdio>#include<cmath>#include<cstring>#include<string>#include<cstdlib>#include<bitset>usingnamespacestd;constintN=1e4+10......
  • 百家国企走进云投集团,探索世界500强数智化转型之路
    为深入推进国资国企数智化进程,加快世界一流企业建设,11月9日,由用友网络科技股份有限公司(简称:用友)与云南省投资控股集团有限公司(简称:云投集团)联合主办的“数智赋能国资创新——走进云投集团暨国资国企数智化转型创新论坛”成功举办!用友网络董事长兼CEO王文京,云投集团党委书记、董事......
  • 19.8 Boost Asio 异或加密传输
    异或加密是一种对称加密算法,通常用于加密二进制数据。异或操作的本质是对两个二进制数字进行比较,如果它们相同则返回0,如果不同则返回1。异或加密使用一把密钥将明文与密文进行异或运算,从而产生密文。同时,使用相同的密钥进行解密将返回原始的明文数据。在异或加密中,加密和解密使用的......
  • 19.8 Boost Asio 异或加密传输
    异或加密是一种对称加密算法,通常用于加密二进制数据。异或操作的本质是对两个二进制数字进行比较,如果它们相同则返回0,如果不同则返回1。异或加密使用一把密钥将明文与密文进行异或运算,从而产生密文。同时,使用相同的密钥进行解密将返回原始的明文数据。在异或加密中,加密和解密使用......
  • 02-异或算法
    2.异或算法2.1异或基础0^N==NN^N==0;记为无进位相加即可,1+1=0;异或运算满足交换律和结合。2.1.1不用额外变量交换两个数解法:aba=b,abb=a。2.1.2找出现奇数次的数1.题目​ 一个数组中有一种数出现了奇数次,其他数都出现了偶数次,怎么找到并打印这种数。2.......
  • 丢失的数字——异或运算
    异或运算1.0和任何数字异或===任何数字本身2.相同数字异或===0,不相同数字异或===13.遵循交换律,结合律 题目给定一个包含 [0,n] 中 n 个数的数组 nums ,找出 [0,n] 这个范围内没有出现在数组中的那个数。输入:nums=[3,0,1]输出:2输入:nums=[0,1]输出:2......
  • 异或树学习指南
    前置芝士异或树中可以形成回文的路径数[problemdescription]给你一棵树(即,一个连通、无向且无环的图),根节点为0,由编号从0到n-1的n个节点组成。这棵树用一个长度为n、下标从0开始的数组parent表示,其中parent[i]为节点i的父节点,由于节点0为根节点,所以pa......
  • python实现shellcode异或加密自动化
    实现的结果如下:1.python脚本里面xorkey随机生成长度16位2.加密后的payload和key直接写入到模板里面3.编译使用gcc编译每次输出文件名随机完成一个自动化过程用法pythonmain.pyshellcode.bin其中shellcode.bin是自己的shellcode二进制文件,项目中的是一个弹出错误框......
  • 【教3妹学编程-算法题】数组中两个数的最大异或值
    3妹:“太阳当空照,花儿对我笑,小鸟说早早早,你为什么背上炸药包”2哥 :3妹,什么事呀这么开心呀。3妹:2哥你看今天的天气多好啊,阳光明媚、万里无云、秋高气爽,适合秋游。2哥:是啊,都快立冬了,天气还是这么热。今年的冬天比以往来的要晚一些。3妹:晚来也是要来的,看天气预报下周要降温,估计没几......