我的解决方案有什么问题?(hackerrank 练习 - 按位运算)
What is wrong with my solution?(hackerrank exercise - bitwise operation)
the link for the excersize
简而言之,'n'是从1到n的一系列数字,'k'是一个数字。
我需要return a&b (a
每当我 运行 这个函数时我得到 0:
function getMaxLessThanK(n, k) {
let maxPV = 0;
for (let a = 1; a < n; a++) {
for (let b = a + 1; b <= n; b++) {
if (a & b < k && a & b > maxPV) {
maxPV = (a & b)
}
}
}
return maxPV
}
这是一个 operator precedence 问题。
比较运算符(<
、>
、...)的优先级高于按位与(&
),所以需要用括号进行分组:
if ((a & b) < k && (a & b) > maxPV) {
// ...
}
完整片段:
function getMaxLessThanK(n, k) {
let maxPV = 0;
for (let a = 1; a < n; a++) {
for (let b = a + 1; b <= n; b++) {
if ((a & b) < k && (a & b) > maxPV) {
maxPV = (a & b);
}
}
}
return maxPV;
}
console.log(getMaxLessThanK(8, 5));
the link for the excersize 简而言之,'n'是从1到n的一系列数字,'k'是一个数字。 我需要return a&b (a
每当我 运行 这个函数时我得到 0:
function getMaxLessThanK(n, k) {
let maxPV = 0;
for (let a = 1; a < n; a++) {
for (let b = a + 1; b <= n; b++) {
if (a & b < k && a & b > maxPV) {
maxPV = (a & b)
}
}
}
return maxPV
}
这是一个 operator precedence 问题。
比较运算符(<
、>
、...)的优先级高于按位与(&
),所以需要用括号进行分组:
if ((a & b) < k && (a & b) > maxPV) {
// ...
}
完整片段:
function getMaxLessThanK(n, k) {
let maxPV = 0;
for (let a = 1; a < n; a++) {
for (let b = a + 1; b <= n; b++) {
if ((a & b) < k && (a & b) > maxPV) {
maxPV = (a & b);
}
}
}
return maxPV;
}
console.log(getMaxLessThanK(8, 5));