Skip to content

Commit 40cc64b

Browse files
committed
Added number of 1 bits and counting bits solution
1 parent 7672c10 commit 40cc64b

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

counting-bits/nhistory.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
var countBits = function (n) {
2+
// Create array which has 0 element length of n
3+
const dp = new Array(n + 1).fill(0);
4+
let offset = 1;
5+
6+
for (let i = 1; i <= n; i++) {
7+
if (offset * 2 === i) offset = i;
8+
dp[i] = 1 + dp[i - offset];
9+
}
10+
return dp;
11+
};
12+
13+
/**
14+
0 -> 0000 -> dp[0] = 0
15+
1 -> 0001 -> dp[1] = 1 + dp[1-1] = 1
16+
2 -> 0010 -> dp[2] = 1 + dp[2-2] = 1
17+
3 -> 0011 -> dp[3] = 1 + dp[3-2] = 2
18+
4 -> 0100 -> dp[4] = 1 + dp[4-4] = 1
19+
5 -> 0101 -> dp[5] = 1 + dp[5-4] = 2
20+
6 -> 0110 -> dp[6] = 1 + dp[6-4] = 2
21+
7 -> 0111 -> dp[7] = 1 + dp[7-4] = 3
22+
8 -> 1000 -> dp[8] = 1 + dp[8-8] = 1
23+
*/
24+
25+
// TC: O(n)
26+
// SC: O(1)

number-of-1-bits/nhistory.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
var hammingWeight = function (n) {
2+
let count = 0;
3+
while (n) {
4+
// Check rightmost bit is equal to 1 by using bitwise AND operator
5+
count += n & 1;
6+
// Remove rightmost bit from n by using right shift operator
7+
n >>= 1;
8+
}
9+
return count;
10+
};
11+
12+
// TC: O(1) -> The worst case of 32-integer would be O(32)
13+
// SC: O(1)

0 commit comments

Comments
 (0)