0
点赞
收藏
分享

微信扫一扫

leetcode-231. 2的幂刷题笔记(c++)


写在前面

  • 运算符,活学活用
  • ​乘法 vs 移位运算​
  • 真tm的菜,,,,,,

题目详情

给定一个整数,编写一个函数来判断它是否是 2 的幂次方。

示例 1:
输入: 1
输出: true
解释: 20 = 1
示例 2:
输入: 16
输出: true
解释: 24 = 16
示例 3:
输入: 218
输出:

ac代码

  • ​F1. res<<=1​

class Solution
{
public:
bool isPowerOfTwo(int n)
{
for(long res=1; res<=n; res<<=1)
{
if(res==n)
return true;
}
return false;
}
};

  • ​F2. res*=2​

class Solution
{
public:
bool isPowerOfTwo(int n)
{
for(long res=1; res<=n; res*=2)
{
if(res==n)
return true;
}
return false;
}
};

  • ​F3. 移位运算-技巧型​
  • 2的幂一定是大于0。对于数n,如果n是2的幂,其二进制数应该只有1个1, 则n&n-1 一定等于0。

class Solution
{
public:
bool isPowerOfTwo(int n)
{
return n>0 && !(n&n-1);
}
};

  • 参考文章
  • Leetcode 231. 2的幂 解题思路及C++实现
  • 231. 2的幂/C++


举报

相关推荐

0 条评论