所有整数的XOR

时间:2019-05-25 04:39:48

标签: javascript xor

我是一名jr网络开发人员,试图提高自己的逻辑/算法技能,但在学习过程中发现了以下类似的编码挑战,因为这种问题可以为我指明正确的方向,我的意思是我应该做什么?学习,检查,复习?对于以下挑战,您能否给我一个解决方法的想法,也许是一些伪代码?

  

挑战:

     

给您Q查询。每个查询包含两个整数L和R。   对于每个查询,请打印出给定范围内所有二进制表示形式只有一位的整数的异或。

     

输入格式:

     
      
  • 第一行包含Q个查询。
  •   
  • 接下来的Q行包含两个整数L和R
  •   
     

输出格式:

     

为每个查询打印一个表示答案的整数

     

约束:

     

1≤Q≤105
  1≤L≤R≤1018

     

样本输入

     

1
  60-130

     

样本输出

     

192

到目前为止,我已经尝试过:

const sumQuery = (q, n) => {
  let bitCount = [];
  //travers the bits
  for(let i = 0; i < 32; i++) {
    for(let j = 0; j < n; j++) {
     // check whether the current bit is
     let temp = Math.sqrt(arr[j]) * 2 );
     if(temp % 2 !== 0 ) {
      console.log(temp)
     }
    }
  }
} 

1 个答案:

答案 0 :(得分:2)

您的问题分为两部分,我将尝试分别回答它们。

1)您应该学习什么以提高逻辑/算法技能? 首先,您应该确定执行此操作的目的(试图获得更好的工作/在CS中建立基础/学习特定系统或框架的功能等)。一旦弄清了要进行改进的确切原因,确定要收集的知识/技能的类型就会容易得多。以下是我提到的路径的一些建议:

a)试图找到更好的工作。如果是这样,我的唯一建议是练习编码面试问题。知识的深度通常与您在面试中解决这些问题的能力无关紧要(根据我的个人经验)。这里是您可以开始的一些地方:

b)建立CS的基础知识。有几种方法可以做到这一点(包括上学)。如果您正在寻找程序,我的建议如下:

c)更好地理解某些系统。为此,我强烈建议您通读系统实现或对它进行更深入的学习。建议:

2)如何解决您的特定编码挑战。这是您提出的其他人描述的挑战(https://www.codechef.com/PRJRF14/problems/XORSN)中80%的重大细分。 我建议您对二进制数据和整数之间的XOR概念有深入的了解。

可能的解决方法步骤(我不会在js中为您写出来,因为您想自己解决它):

  • 就像Maaz Syed Adeeb提到的那样-搜索给定整数范围之间的XOR时,只需考虑2的幂(因为它们是唯一具有一位二进制表示的整数)。
  • 记下给定约束valid = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]中的2的所有幂
  • 确定其中哪些位于给定范围内
  • 将每个valid整数转换为二进制
  • 使用此逻辑在每个valid整数之间查找XOR
Rule 1 : If both bits are 1 then XOR’ed bit will be 0.
Rule 2 : If both bits are 0 then XOR’ed bit will be 0.
Rule 3 : If one bit is 0 and one bit is 1 XOR’ed bit will be 1.
  • 将您上次XOR比较中的二进制代码转换为整数

祝你好运!