File tree Expand file tree Collapse file tree 1 file changed +45
-0
lines changed Expand file tree Collapse file tree 1 file changed +45
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * ๋ ๋ฒ์งธ ํ์ด
3
+ * ์๊ฐ๋ณต์ก๋: O(n)
4
+ * ๊ณต๊ฐ๋ณต์ก๋: O(n)
5
+ * @param {number } n
6
+ * @return {number[] }
7
+ */
8
+ const countBits = function ( n ) {
9
+ const arr = [ 0 ] ;
10
+
11
+ for ( let i = 1 ; i < n + 1 ; i ++ ) {
12
+ arr [ i ] = arr [ i >> 1 ] + ( i & 1 ) ;
13
+ // i >> 1: ์ตํ์ ๋นํธ๋ฅผ ์ ์ธํ ๊ฐ. ์ด๊ฑธ ์ด์ฉํด์ ์ด์ ์ธ๋ฑ์ค ์ฌ์ฉ(dp)
14
+ // i // 2 (2๋ก ๋๋ ๋ชซ)์ ๊ฐ์.
15
+ // i & 1: ์ตํ์ ๋นํธ (1 ๋๋ 0)
16
+ }
17
+
18
+ return arr ;
19
+ } ;
20
+
21
+ /**
22
+ * ์ฒซ ๋ฒ์งธ ํ์ด
23
+ * ์๊ฐ๋ณต์ก๋: O(n * log n)
24
+ * ๊ณต๊ฐ๋ณต์ก๋: O(n)
25
+ * @param {number } n
26
+ * @return {number[] }
27
+ */
28
+ const countBits = function ( n ) {
29
+ const arr = [ ] ;
30
+
31
+ for ( let i = 0 ; i < n + 1 ; i ++ ) {
32
+ const bin = i . toString ( 2 ) ; // O(log n)
33
+
34
+ let num = 0 ;
35
+
36
+ // O(log n)
37
+ for ( let char of bin ) {
38
+ if ( char === '1' ) num ++ ;
39
+ }
40
+
41
+ arr . push ( num ) ;
42
+ }
43
+
44
+ return arr ;
45
+ } ;
You canโt perform that action at this time.
0 commit comments