力扣1342

我的做法
缺点就是时间复杂度比较高,这种统计01问题、除二乘二都应该考虑二进制的移位等。
优化版本
次数 = 二进制位数 + 二进制中 1 的个数 次数 = 二进制位数 + 二进制中1的个数 次数=二进制位数+二进制中1的个数
二进制位数 = 32 - 前导0个数(使用
二进制中1个数
补充 c++内自带的位运算函数总结
- _builtin_ctz( ) / _buitlin_ctzll( )
返回括号内数二进制表示形式的末尾0个数
- _buitlin_clz( ) / buitlin_clzll( )
返回括号内数的二进制表示形式前导0个数
- __builtin_popcount( )
返回括号内数的二进制表示形式1个数
- __builtin_sqrt( )
快速开平方