File tree 4 files changed +107
-0
lines changed
product-of-array-except-self
4 files changed +107
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * ์ฐ์๋๋ ์๋ธ ๋ฐฐ์ด๋ก ์ต๋ ํฉ์ ๊ตฌํ๊ธฐ
3
+ * ์๊ณ ๋ฆฌ์ฆ ๋ณต์ก๋
4
+ * - ์๊ฐ ๋ณต์ก๋: O(n)
5
+ * - ๊ณต๊ฐ ๋ณต์ก๋: O(1)
6
+ * @param nums
7
+ */
8
+ function maxSubArray ( nums : number [ ] ) : number {
9
+ if ( nums . length === 1 ) return nums [ 0 ]
10
+
11
+ let currentSum = nums [ 0 ]
12
+ let maxSum = nums [ 0 ]
13
+ for ( let i = 1 ; i < nums . length ; i ++ ) {
14
+ currentSum = Math . max ( nums [ i ] , currentSum + nums [ i ] )
15
+ // ์ต๋๊ฐ ๊ฐฑ์
16
+ maxSum = Math . max ( maxSum , currentSum )
17
+ }
18
+
19
+ return maxSum
20
+ }
Original file line number Diff line number Diff line change
1
+ /**
2
+ * ๋ณธ์ธ ์ธ๋ฑ์ค์ ์๋ ๊ฐ์ ์ ์ธํ ๋ชจ๋ ์์ ๊ณฑ
3
+ * ์๊ณ ๋ฆฌ์ฆ ๋ณต์ก๋
4
+ * - ์๊ฐ๋ณต์ก๋: O(n)
5
+ * - ๊ณต๊ฐ๋ณต์ก๋: O(1)
6
+ * @param nums
7
+ */
8
+ function productExceptSelf ( nums : number [ ] ) : number [ ] {
9
+ let len = nums . length
10
+ let output = Array ( len ) . fill ( 1 )
11
+
12
+ /* ex) [1, 2, 3, 4]
13
+ left >>>
14
+ i = 0 -> 1 = 1
15
+ i = 1 -> 1 * 1 = 1
16
+ i = 2 -> 1 * 1 * 2 = 2
17
+ i = 3 -> 1 * 1 * 2 * 3 = 6
18
+ */
19
+ // ์ผ์ชฝ๋ถํฐ ๋์ ๊ณฑ
20
+ let left = 1
21
+ for ( let i = 0 ; i < len ; i ++ ) {
22
+ output [ i ] *= left
23
+ left *= nums [ i ]
24
+ }
25
+
26
+ /*
27
+ right >>>
28
+ i = 3 -> 1 = 1
29
+ i = 2 -> 1 * 4 = 4
30
+ i = 1 -> 1 * 4 * 3 = 12
31
+ i = 3 -> 1 * 4 * 3 * 2 = 24
32
+
33
+ output >>>
34
+ i = 0 -> 1 * 24 = 24
35
+ i = 1 -> 1 * 12 = 12
36
+ i = 2 -> 2 * 4= 8
37
+ i = 3 -> 6 * 1 = 6
38
+ */
39
+ // ์ค๋ฅธ์ชฝ๋ถํฐ ๋์ ๊ณฑ์ output ๊ฐ ์๋ฆฌ์ ๊ณฑํจ
40
+ let right = 1
41
+ for ( let i = len - 1 ; i >= 0 ; i -- ) {
42
+ output [ i ] *= right
43
+ right *= nums [ i ]
44
+ }
45
+
46
+ return output
47
+ }
Original file line number Diff line number Diff line change
1
+ /**
2
+ * ์ ์๋ฅผ ๋นํธ๋ก ๋ณํํ ๋ค์ง์ด์ ๋ค์ ์ ์๋ก ๋ฐํ
3
+ * ์๊ณ ๋ฆฌ์ฆ ๋ณต์ก๋
4
+ * - ์๊ฐ๋ณต์ก๋: O(1)
5
+ * - ๊ณต๊ฐ๋ณต์ก๋: O(1)
6
+ * @param n
7
+ */
8
+ function reverseBits ( n : number ) : number {
9
+ // 2์ง์ ๋ฐฐ์ด๋ก ๋ณํ
10
+ let arr = n . toString ( 2 ) . split ( '' )
11
+ let len = arr . length
12
+ // 32๋นํธ ์ ๋ ฌ - ๋ถ์กฑํ ์์ชฝ์ 0์ผ๋ก ์ฑ์
13
+ for ( let i = 0 ; i < ( 32 - len ) ; i ++ ) {
14
+ arr . unshift ( '0' ) ;
15
+ }
16
+ // ๋ค์ง์ ํ ํฉ์นจ
17
+ let result = arr . reverse ( ) . join ( '' )
18
+ // 2์ง์ ์ ์๋ก ๋ณํํ์ฌ ๋ฐํ
19
+ return parseInt ( result , 2 )
20
+ }
Original file line number Diff line number Diff line change
1
+ /**
2
+ * ๋ฐฐ์ด ๋ ์์ ํฉ์ด target ๊ณผ ๊ฐ์ ๊ฐ
3
+ * ์๊ณ ๋ฆฌ์ฆ ๋ณต์ก๋:
4
+ * - ์๊ฐ๋ณต์ก๋: O(n^2)
5
+ * - ๊ณต๊ฐ๋ณต์ก๋: O(1)
6
+ * @param nums
7
+ * @param target
8
+ */
9
+ function twoSum ( nums : number [ ] , target : number ) : number [ ] {
10
+ let result : number [ ] = [ ] ;
11
+
12
+ for ( let i = 0 ; i < nums . length ; i ++ ) {
13
+ for ( let j = i + 1 ; j < nums . length ; j ++ ) {
14
+ if ( nums [ i ] + nums [ j ] === target ) {
15
+ result . push ( i , j ) ;
16
+ return result ;
17
+ }
18
+ }
19
+ }
20
+ }
You canโt perform that action at this time.
0 commit comments