本文主要是介绍力扣231. 2 的幂(位运算),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Problem: 231. 2 的幂
文章目录
- 题目描述
- 思路及解法
- 复杂度
- Code
题目描述
思路及解法
1.若为0和负数则直接返回false;
2.利用一个标志数mask令其为一,不断的算术左移同时和n做与(&)运算,统计n中二进制位为1的个数,若二进制位的个数为1则说明是二的幂否则不可;
复杂度
时间复杂度:
O ( 1 ) O(1) O(1)
空间复杂度:
O ( 1 ) O(1) O(1)
Code
class Solution {/*** Power of Two** @param n Given number* @return boolean*/public boolean isPowerOfTwo(int n) {if (n < 0) {return false;}int oneCount = 0;int mask = 1;for (int i = 0; i < 32; ++i) {if ((n & mask) != 0) {oneCount++;}mask <<= 1;}return oneCount == 1 ? true : false;}
}
这篇关于力扣231. 2 的幂(位运算)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!