#+ANKI_DECK: study_deck_02 * TODO 0338. Counting Bits :easy: :PROPERTIES: :NEETCODE: [[file:../../roadmap.org::*0338. Counting Bits][0338. Counting Bits]] :END: Given an integer ~n~, return /an array /~ans~/ of length /~n + 1~/ such that for each /~i~/ /(~0 <= i <= n~)/, /~ans[i]~/ is the *number of */~1~/*'s* in the binary representation of /~i~. *Example 1:* #+begin_src Input: n = 2 Output: [0,1,1] Explanation: 0 --> 0 1 --> 1 2 --> 10 #+end_src *Example 2:* #+begin_src Input: n = 5 Output: [0,1,1,2,1,2] Explanation: 0 --> 0 1 --> 1 2 --> 10 3 --> 11 4 --> 100 5 --> 101 #+end_src *Constraints:* - ~0 <= n <= 10^{5}~ *Follow up:* - It is very easy to come up with a solution with a runtime of ~O(n log n)~. Can you do it in linear time ~O(n)~ and possibly in a single pass? - Can you do it without using any built-in function (i.e., like ~__builtin_popcount~ in C++)? ** TODO Approach Write your approach here. ** TODO Python #+begin_src python class Solution: def countBits(self, n: int) -> List[int]: #+end_src ** TODO C++ #+begin_src cpp class Solution { public: vector countBits(int n) { } }; #+end_src