CS-Notes/notes/15. 二进制中 1 的个数.md
2020-11-17 00:32:18 +08:00

28 lines
818 B
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 15. 二进制中 1 的个数
## 题目链接
[牛客网](https://www.nowcoder.com/practice/8ee967e43c2c4ec193b040ea7fbb10b8?tpId=13&tqId=11164&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking&from=cyc_github)
## 题目描述
输入一个整数输出该数二进制表示中 1 的个数
### 解题思路
n&(n-1) 位运算可以将 n 的位级表示中最低的那一位 1 设置为 0不断将 1 设置为 0直到 n 0时间复杂度O(M)其中 M 表示 1 的个数
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/image-20201105004127554.png" width="500px"> </div><br>
```java
public int NumberOf1(int n) {
int cnt = 0;
while (n != 0) {
cnt++;
n &= (n - 1);
}
return cnt;
}
```