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