leetcode中的一个问题?

发布于 2022-09-06 00:17:11 字数 581 浏览 15 评论 0

原题链接

题目描述:
Given an integer, write a function to determine if it is a power of two.
也就是判断一个数是否是2的幂

我的代码如下:

class Solution {
public:
    bool isPowerOfTwo(int n) {
        if (n & (n - 1) == 0) {
            return true;
        }
        else {
            return false;
        }
    }
};

我的这段代码无法通过测试点:2

图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

浅暮の光 2022-09-13 00:17:11

在JS中, === 的优先级是10 , & 的优先级是9. 因此会先计算 === 然后计算 &,因此你的答案应该增加括号(括号的优先级最高,为20),使得先进行 & 运算,再进行 === 运算。

参考: https://developer.mozilla.org...

遗忘曾经 2022-09-13 00:17:11

可能是运算符优先级的问题,试试:

if ((n & (n - 1)) == 0) {
  return true;
} else {
   return false;
}

// 或者直接:
return !(n & n - 1);
芯好空 2022-09-13 00:17:11

是运算符优先级的问题:((n & n-1) == 0),但是你还没考虑n=0的情况。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文