Skip to content

Commit 17f64d9

Browse files
committed
Add counting-bits solution
1 parent 0a731d2 commit 17f64d9

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

counting-bits/Jeehay28.js

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
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+

0 commit comments

Comments
 (0)