美文网首页
【竞赛题】找出强数对的最大异或值 I

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

作者: 程序员小2 | 来源:发表于2023-11-11 11:09 被阅读0次

题目:

给你一个下标从 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

思路:

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

java代码:

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);
    }
}

相关文章

  • 九宫格公式

    总列数 = 值 行 = parseInt (i/总列数的值 )列 = i%总列数的值 X = 列 *(宽度+间距)...

  • 5640. 与数组中元素的最大异或值

    5640. 与数组中元素的最大异或值[https://leetcode-cn.com/problems/maxim...

  • 区间---RMQ区间最值查询

    RMQ区间最值查询,对于长度为n的数组A[]。RMQ(i,j),返回数组A区间[i , j]内的最大值或最小值。 ...

  • 最大的leftMax和rightMax之差的最大值

    题目: 思路: 差绝对值最大,即找出最大的数减去一个数首先找出所有数中的最大值,找出来之后分两种情况1.该最大值属...

  • LeetCode 389. Find the Differenc

    找出两个string中的单一值,使用异或操作,两个相同的值异或等于零,把两个string中的所有值都做异或操作,最...

  • 找出数组a[]中符合a[i]+a[j]=K的数对

    http://blog.csdn.net/jeanphorn/article/details/46564589 1...

  • 【竞赛题】6354. 找出数组的串联值

    题目: 给你一个下标从 0 开始的整数数组 nums 。 现定义两个数字的 串联 是由这两个数值串联起来形成的新数...

  • i++ ++i

    区分变量的值与表达式的值 i++ :表达式取原值,j但i的值是加1或减1之后的值++i :表达式和i的值都是加1或...

  • i++ ++i

    区分变量的值与表达式的值 i++ :表达式取原值,j但i的值是加1或减1之后的值++i :表达式和i的值都是加1或...

  • house robber 动态规划dp(?)

    题目1: leetcode198 House Robber在一列数组中找出一个或多个不相邻数,使其值最大。 思路一...

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/kdikwdtx.html