给出一个巧妙方法,可以消去二进制数最右边的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 ,其余不变。
给出一个巧妙方法,可以消去二进制数最右边的1
而不用每次判断最后一位然后除以2,这个方法时间复杂度 \(O(log_2 n)\) 空间 \(O(1)\)
巧妙方法可以实现,时间复杂度\(O(M)\),M为二进制数中1的个数
巧用 n & (n - 1)