• 竞赛6194. 最小 XOR


    解题思路
     1、二进制中num的1的数量等于num2中的1的数量
     2、num1中二进制,和num前面相同,后面不同,这样异或操作后得到的最小,
     3、相同部分不变,不同部分都是0,如果还有1剩余那就都是1

    给你两个正整数 num1 和 num2 ,找出满足下述条件的整数 x :

    x 的置位数和 num2 相同,且
    x XOR num1 的值 最小
    注意 XOR 是按位异或运算。

    返回整数 x 。题目保证,对于生成的测试用例, x 是 唯一确定 的。

    整数的 置位数 是其二进制表示中 1 的数目。

    示例 1:

    输入:num1 = 3, num2 = 5
    输出:3
    解释:
    num1 和 num2 的二进制表示分别是 0011 和 0101 。
    整数 3 的置位数与 num2 相同,且 3 XOR 3 = 0 是最小的。
    示例 2:

    输入:num1 = 1, num2 = 12
    输出:3
    解释:
    num1 和 num2 的二进制表示分别是 0001 和 1100 。
    整数 3 的置位数与 num2 相同,且 3 XOR 1 = 2 是最小的。
     

    提示:

    1 <= num1, num2 <= 109

    来源:力扣(LeetCode)
    链接:https://leetcode.cn/problems/minimize-xor
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    /**
     * @param {number} num1
     * @param {number} num2
     * @return {number}
     */
    var minimizeXor = function(num1, num2) {
        //没接触过二进制的就难理解了,
        //1、二进制中num的1的数量等于num2中的1的数量
        //2、num1中二进制,和num前面相同,后面不同,这样异或操作后得到的最小,
        // 相同部分不变,不同部分都是0,如果还有1剩余那就都是1
        const str1=num2.toString(2).replace(/0/g,'');
        const str2=num1.toString(2);
        let len1=str1.length
        const len2=str2.length
        if(len1<len2){
            let back;
            for(let i=0;i<str2.length;i++){
                if(str2[i]==='1'){
                     len1--
                 }
                 if(len1===0){
                    back=str2.substr(0,i+1)+'0'.repeat(str2.length-i-1)
                    break
                 }else if(len1>=str2.length-i){
                    back=str2.substring(0,i)+'1'.repeat(len1)
                    break
                }
            }
            return parseInt(back,2)
        }else{
            return parseInt(str1,2)
        }
    };
  • 相关阅读:
    SpringCloud之Nacos服务注册(十八)
    SpringCloud之Nacos服务发现(十七)
    Pillow模块图片生成
    js中==和===区别
    jQuery跳转到另一个页面以及原生js跳转到另一个页面
    django搭建BBS-登入&验证码的生成
    django搭建BBS-表单创建&注册
    POJ3784 Running Median
    POJ 2559 Largest Rectangle in a Histogram
    Codevs1299 切水果
  • 原文地址:https://www.cnblogs.com/caoke/p/16750583.html
Copyright © 2020-2023  润新知