File tree 4 files changed +111
-0
lines changed
longest-consecutive-sequence
4 files changed +111
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * 시간 복잡도:
3
+ * 맵에서 nums[i]를 찾거나 삽입하는 데 걸리는 시간 O(1) * n(nums.length)
4
+ * 즉, O(n)
5
+ * 공간 복잡도:
6
+ * 최대 map의 크기는 nums.length만큼
7
+ * 즉, O(n)
8
+ */
9
+ /**
10
+ * @param {number[] } nums
11
+ * @return {boolean }
12
+ */
13
+ var containsDuplicate = function ( nums ) {
14
+ const map = new Map ( ) ;
15
+ for ( let i = 0 ; i < nums . length ; i ++ ) {
16
+ if ( ! map . has ( nums [ i ] ) ) {
17
+ map . set ( nums [ i ] , i ) ;
18
+ } else {
19
+ return true ;
20
+ }
21
+ }
22
+ return false ;
23
+ } ;
Original file line number Diff line number Diff line change
1
+ /**
2
+ * 시간 복잡도:
3
+ * set의 요소 중 연속하는 시퀀스의 첫번째 숫자일 때만
4
+ * while 루프를 실행
5
+ * 따라서 요소당 최대 1회 순회
6
+ * 즉, 시간 복잡도는 O(n)
7
+ * 공간 복잡도:
8
+ * set은 중복이 없을 경우 최대 O(n)를 차지함
9
+ * 즉, 공간 복잡도는 O(n)
10
+ */
11
+ /**
12
+ * @param {number[] } nums
13
+ * @return {number }
14
+ */
15
+ var longestConsecutive = function ( nums ) {
16
+ const set = new Set ( nums ) ;
17
+ let res = 0 ;
18
+ for ( const n of set ) {
19
+ let seqLen = 0 , target = n ;
20
+ const isSeqStart = ! set . has ( target - 1 ) ;
21
+ if ( isSeqStart ) {
22
+ while ( set . has ( target ) ) {
23
+ target ++ ;
24
+ seqLen ++ ;
25
+ }
26
+ }
27
+ res = Math . max ( seqLen , res ) ;
28
+ }
29
+ return res ;
30
+ } ;
Original file line number Diff line number Diff line change
1
+ /**
2
+ * 시간 복잡도:
3
+ * nums.length만큼의 배열을 정렬해야 하므로
4
+ * 즉, O(n * log n)
5
+ * 공간 복잡도:
6
+ * 최대 nums.length만큼의 map 생성
7
+ * 즉, O(n)
8
+ */
9
+ /**
10
+ * @param {number[] } nums
11
+ * @param {number } k
12
+ * @return {number[] }
13
+ */
14
+ var topKFrequent = function ( nums , k ) {
15
+ const map = new Map ( ) ;
16
+ for ( const n of nums ) {
17
+ if ( ! map . has ( n ) ) {
18
+ map . set ( n , 0 ) ;
19
+ }
20
+ map . set ( n , map . get ( n ) + 1 )
21
+ }
22
+ const sorted = Array . from ( map ) . sort ( ( a , b ) => b [ 1 ] - a [ 1 ] ) ;
23
+ return sorted . slice ( 0 , k ) . map ( e => e [ 0 ] )
24
+ } ;
Original file line number Diff line number Diff line change
1
+ /**
2
+ * 시간 복잡도:
3
+ * s.length만큼 탐색. 즉, O(n)
4
+ * 공간 복잡도:
5
+ * 변수와 함수만 저장. 즉, O(1)
6
+ */
7
+
8
+ /**
9
+ * @param {string } s
10
+ * @return {boolean }
11
+ */
12
+ var isPalindrome = function ( s ) {
13
+ const isAlphaNumeric = ( v ) => {
14
+ return ( / ^ [ a - z 0 - 9 ] $ / i) . test ( v ) ;
15
+ } ;
16
+
17
+ let l = 0 ;
18
+ let r = s . length - 1 ;
19
+ while ( l < r ) {
20
+ while ( ! isAlphaNumeric ( s [ l ] ) && l < r ) {
21
+ l ++ ;
22
+ }
23
+ while ( ! isAlphaNumeric ( s [ r ] ) && l < r ) {
24
+ r -- ;
25
+ }
26
+
27
+ if ( s [ l ] . toLowerCase ( ) !== s [ r ] . toLowerCase ( ) ) {
28
+ return false ;
29
+ }
30
+ l ++ ;
31
+ r -- ;
32
+ }
33
+ return true ;
34
+ } ;
You can’t perform that action at this time.
0 commit comments