Brian Kernighan 算法:从0到n,每个整数都分别计算它们的二进制中表示1的个数,再返回数组即可,而使用Brian Kernighan 算法的优点是可以在一定程度上进一步提升计算速度。Brian Kernighan算法的原理是:对于任意整数 x,令 x = x & (x−1),该运算将 x 的二进制表示的最后一个 1 变成 0。因此,对 x 重复该操作,直到 x 变成 0,则操作次数即为 x 的「二进制带有1的比特数」。
3、代码演示
publicint[]countBits(int n){// 创建一个大小为n+1的数组来存储结果int[] bits =newint[n +1];// 遍历从0到n的每个数字 for(int i =0; i <= n; i++){// 计算当前数字i的二进制表示中1的个数,并将结果存储在数组中
bits[i]=countOne(i);}return bits;}publicintcountOne(int x){int ones =0;while(x >0){
x &=(x -1);
ones++;}return ones;}
我叫GPT给我写注释,他说我的countOne函数写的不对,问题在于 x &= (x - 1); 这一行。这行代码确实会消除 x 的二进制表示中的最低位的1,但它并不适合用于计数。因为无论你执行多少次这个操作,只要 x 不为0,ones 就会一直增加,即使 x 的某些位原本就是0。应该这样写:
MySQL排序小坑_mysql order by name相同导致排序混乱-CSDN博客
1、问题描述
列表页分页查询出现重复数据。
2、问题排查
排查最终执行sql日志。
select * from tableA where
(start_time>2024-04-17 00:00:00) AND (start_time<2024-05-18 00:00:00)
ORDER BY sta…
Microsoft Remote Desktop 是一款由微软开发的远程桌面控制软件。它允许用户通过互联网连接到远程计算机,从而可以在本地计算机上访问和控制远程计算机的桌面、文件和应用程序。 下载地址:https://www.macz.com/mac/1004.html?idOTI2NjQ5Jl8mMjcuMTg2Lj…