File tree Expand file tree Collapse file tree 1 file changed +51
-0
lines changed
Expand file tree Collapse file tree 1 file changed +51
-0
lines changed Original file line number Diff line number Diff line change 1+ // ✅ Time Complexity: O(n)
2+ // ✅ Space Complexity: O(n)
3+
4+ /**
5+ * @param {number } n
6+ * @return {number[] }
7+ */
8+ var countBits = function ( n ) {
9+ // dp[i] = 1 + dp[i - MSB]
10+ // MSB(Most Significant Bit)
11+
12+ let dp = new Array ( n + 1 ) . fill ( 0 ) ;
13+ let msb = 1 ;
14+
15+ for ( let i = 1 ; i <= n ; i ++ ) {
16+ if ( msb * 2 === i ) {
17+ msb = i ;
18+ }
19+
20+ dp [ i ] = 1 + dp [ i - msb ] ;
21+ }
22+
23+ return dp ;
24+ } ;
25+
26+ // ✅ Time Complexity: O(n * logn)
27+ // ✅ Space Complexity: O(n)
28+
29+ /**
30+ * @param {number } n
31+ * @return {number[] }
32+ */
33+ // var countBits = function (n) {
34+ // let result = [0];
35+ // const count = (num) => {
36+ // let cnt = 0;
37+ // while (num !== 0) {
38+ // cnt += num % 2;
39+ // num = Math.floor(num / 2);
40+ // }
41+ // return cnt;
42+ // };
43+
44+ // for (let i = 1; i <= n; i++) {
45+ // const temp = count(i);
46+ // result.push(temp);
47+ // }
48+
49+ // return result;
50+ // };
51+
You can’t perform that action at this time.
0 commit comments