我是一名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)
}
}
}
}
答案 0 :(得分:2)
您的问题分为两部分,我将尝试分别回答它们。
1)您应该学习什么以提高逻辑/算法技能? 首先,您应该确定执行此操作的目的(试图获得更好的工作/在CS中建立基础/学习特定系统或框架的功能等)。一旦弄清了要进行改进的确切原因,确定要收集的知识/技能的类型就会容易得多。以下是我提到的路径的一些建议:
a)试图找到更好的工作。如果是这样,我的唯一建议是练习编码面试问题。知识的深度通常与您在面试中解决这些问题的能力无关紧要(根据我的个人经验)。这里是您可以开始的一些地方:
b)建立CS的基础知识。有几种方法可以做到这一点(包括上学)。如果您正在寻找程序,我的建议如下:
c)更好地理解某些系统。为此,我强烈建议您通读系统实现或对它进行更深入的学习。建议:
2)如何解决您的特定编码挑战。这是您提出的其他人描述的挑战(https://www.codechef.com/PRJRF14/problems/XORSN)中80%的重大细分。 我建议您对二进制数据和整数之间的XOR概念有深入的了解。
可能的解决方法步骤(我不会在js中为您写出来,因为您想自己解决它):
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.
祝你好运!