leetcode 剑指offer 15 二进制中 1 的个数

给出一个巧妙方法,可以消去二进制数最右边的1
而不用每次判断最后一位然后除以2,这个方法时间复杂度 (O(log_2 n)) 空间 (O(1))
巧妙方法可以实现,时间复杂度(O(M)),M为二进制数中1的个数
 

巧用 (n & (n - 1))

  • ((n - 1))解析: 二进制数字 n最右边的 1 变成 0 ,此 1右边的 0 都变成 1 。
  • (n & (n - 1))解析: 二进制数字 n 最右边的 1 变成 0 ,其余不变。













种一棵树最好的时间是十年前,其次是现在。
原文地址:https://www.cnblogs.com/islch/p/12618901.html