mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-01-10 18:48:13 +08:00
43 lines
1.2 KiB
HTML
43 lines
1.2 KiB
HTML
<p>Given an integer <code>n</code>, return <em>an array </em><code>ans</code><em> of length </em><code>n + 1</code><em> such that for each </em><code>i</code><em> </em>(<code>0 <= i <= n</code>)<em>, </em><code>ans[i]</code><em> is the <strong>number of </strong></em><code>1</code><em><strong>'s</strong> in the binary representation of </em><code>i</code>.</p>
|
|
|
|
<p> </p>
|
|
<p><strong>Example 1:</strong></p>
|
|
|
|
<pre>
|
|
<strong>Input:</strong> n = 2
|
|
<strong>Output:</strong> [0,1,1]
|
|
<strong>Explanation:</strong>
|
|
0 --> 0
|
|
1 --> 1
|
|
2 --> 10
|
|
</pre>
|
|
|
|
<p><strong>Example 2:</strong></p>
|
|
|
|
<pre>
|
|
<strong>Input:</strong> n = 5
|
|
<strong>Output:</strong> [0,1,1,2,1,2]
|
|
<strong>Explanation:</strong>
|
|
0 --> 0
|
|
1 --> 1
|
|
2 --> 10
|
|
3 --> 11
|
|
4 --> 100
|
|
5 --> 101
|
|
</pre>
|
|
|
|
<p> </p>
|
|
<p><strong>Constraints:</strong></p>
|
|
|
|
<ul>
|
|
<li><code>0 <= n <= 10<sup>5</sup></code></li>
|
|
</ul>
|
|
|
|
<p> </p>
|
|
<p><strong>Follow up:</strong></p>
|
|
|
|
<ul>
|
|
<li>It is very easy to come up with a solution with a runtime of <code>O(n log n)</code>. Can you do it in linear time <code>O(n)</code> and possibly in a single pass?</li>
|
|
<li>Can you do it without using any built-in function (i.e., like <code>__builtin_popcount</code> in C++)?</li>
|
|
</ul>
|