<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>