LeetCode之Power of Two
【摘要】 1、题目
Given an integer, write a function to determine if it is a power of two.
Credits: Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases....
1、题目
Given an integer, write a function to determine if it is a power of two.
Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.
Subscribe to see which companies asked this question.
2、分析
比如我们发现1、2、4、8、16转化成二进制为
1、10、100、1000、10000、
我们发现第一位是1后面都是0
思路1、
我们先把这个数字和1进行&操作得到一个数temp,然后原数右移动,然后把右移的数字再和1进行&操作,然后和temp相加,如果都是1000,temp之元数不是1之前都是0,最后一次右移动,就成了1,temp == 1,就可以了返回是
思路2、
我们原素减去-1和元素&操作,如果结果为0就说明是。
3、代码实现
C++代码实现1
-
class Solution {
-
public:
-
bool isPowerOfTwo(int n) {
-
int temp = 0;
-
while (n > 0) {
-
temp += (n & 1);
-
n >>= 1;
-
}
-
return temp == 1;
-
}
-
};
C++代码实现2
-
class Solution {
-
public:
-
bool isPowerOfTwo(int n) {
-
return (n > 0) && !(n & (n - 1));
-
}
-
};
java代码实现2
-
public class Solution {
-
public boolean isPowerOfTwo(int n) {
-
return (n > 0) && ((n & (n - 1)) == 0 ? true : false);
-
}
-
}
文章来源: chenyu.blog.csdn.net,作者:chen.yu,版权归原作者所有,如需转载,请联系作者。
原文链接:chenyu.blog.csdn.net/article/details/69789070
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)