判断是不是2的 x 次方。
方法一:不断除2看是否能被整除
方法二:用内置函数
方法三:上节是位运算X & (X-1) 统计1的个数,这里是位为1的个数只能是1个。
所以利用X & (X-1)消除二进制中的1,则就是0了,仅需操作一次。
class Solution { fun isPowerOfTwo(n: Int): Boolean { val x=n.toLong() if (x == 0L) return false return x and (x - 1) == 0L } }
方法一:按上个题目的思路,依次对每个数字进行统计
方法二:利用位运算递推
建立一个数组,利用 x & (x – 1) 每次消除一个1的特性,可以得出这么一个递推式:bits[i] += bits[i & (i – 1) ] +1
class Solution {
fun countBits(num: Int): IntArray {
val bits = IntArray(num + 1) { 0 }
for (i in 1 .. num){
bits[i]+=bits[i and (i-1)] +1
}
return bits
}
}
本站由以下主机服务商提供服务支持:
0条评论