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