File tree Expand file tree Collapse file tree 5 files changed +94
-0
lines changed Expand file tree Collapse file tree 5 files changed +94
-0
lines changed Original file line number Diff line number Diff line change 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)
Original file line number Diff line number Diff line change 1+ var groupAnagrams = function ( strs ) {
2+ // Declare hash map to store sorted strs
3+ let map = new Map ( ) ;
4+
5+ for ( let str of strs ) {
6+ // Sorted each str
7+ const sortedStr = str . split ( "" ) . sort ( ) . join ( "" ) ;
8+
9+ // If there is alread sortedStr on the map, pushed str
10+ if ( map . has ( sortedStr ) ) {
11+ map . get ( sortedStr ) . push ( str ) ;
12+ } else {
13+ // If there is no sortedStr on the map, insert [str]
14+ map . set ( sortedStr , [ str ] ) ;
15+ }
16+ }
17+ return Array . from ( map . values ( ) ) ;
18+ } ;
19+
20+ // TC: O(n*klogk)
21+ // SC: O(n*k)
22+ // n -> length of strs array
23+ // k -> amount of character for each element
Original file line number Diff line number Diff line change 1+ var missingNumber = function ( nums ) {
2+ // Get a expected summation
3+ const n = nums . length ;
4+ const expectedSum = ( n * ( n + 1 ) ) / 2 ;
5+
6+ // Calculate summation of nums
7+ let numsSum = 0 ;
8+ for ( let i = 0 ; i < n ; i ++ ) {
9+ numsSum += nums [ i ] ;
10+ }
11+
12+ return expectedSum - numsSum ;
13+ } ;
14+
15+ // TC: O(n)
16+ // SC: O(1)
Original file line number Diff line number Diff line change 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)
Original file line number Diff line number Diff line change 1+ var reverseBits = function ( n ) {
2+ // Make variable to store input
3+ // toString method doesn't include 0 front of number
4+ let binary = n . toString ( 2 ) ;
5+
6+ // Added number of 0s to satisfy 32 bits
7+ while ( binary . length < 32 ) {
8+ binary = "0" + binary ;
9+ }
10+
11+ // Reversed binary string and convert into integer
12+ return parseInt ( binary . split ( "" ) . reverse ( ) . join ( "" ) , 2 ) ;
13+ } ;
14+
15+ // TC: O(1)
16+ // SC: O(1)
You can’t perform that action at this time.
0 commit comments