File tree Expand file tree Collapse file tree 4 files changed +111
-0
lines changed
longest-consecutive-sequence Expand file tree Collapse file tree 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