File tree Expand file tree Collapse file tree 4 files changed +157
-0
lines changed
longest-consecutive-sequence Expand file tree Collapse file tree 4 files changed +157
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[] } nums
3
+ * @return {boolean }
4
+ */
5
+ var containsDuplicate = function ( nums ) {
6
+ const sortedNums = nums . sort ( ( a , b ) => a - b ) ;
7
+ const length = sortedNums . length - 1 ;
8
+
9
+ for ( let i = 0 ; i < length ; i ++ ) {
10
+ const left = nums [ i ] ;
11
+ const right = nums [ i + 1 ] ;
12
+
13
+ if ( left === right ) {
14
+ return true ;
15
+ }
16
+ }
17
+
18
+ return false ;
19
+ } ;
Original file line number Diff line number Diff line change
1
+ /**
2
+ * solve 1
3
+ *
4
+ * 시간 복잡도: O(n log n)
5
+ * 공간 복잡도: O(n)
6
+ *
7
+ * @param {number[] } nums
8
+ * @return {number }
9
+ */
10
+ var longestConsecutive = function ( nums ) {
11
+ // 예외
12
+ if ( nums . length === 0 ) {
13
+ return 0 ;
14
+ }
15
+
16
+ const sortedArr = [ ...new Set ( nums ) ] . sort ( ( a , b ) => a - b ) ;
17
+
18
+ let result = 1 ;
19
+ let consecutive = 1 ;
20
+
21
+ for ( let i = 0 ; i < sortedArr . length - 1 ; i ++ ) {
22
+ const curr = sortedArr [ i ] ;
23
+ const next = sortedArr [ i + 1 ] ;
24
+
25
+ if ( next === curr + 1 ) {
26
+ consecutive += 1 ;
27
+ } else {
28
+ consecutive = 1 ;
29
+ }
30
+
31
+ result = Math . max ( result , consecutive ) ;
32
+ }
33
+
34
+ return result ;
35
+ } ;
36
+
37
+ /**
38
+ * solve 2
39
+ *
40
+ * 시간 복잡도: O(n)
41
+ * 공간 복잡도: O(n)
42
+ *
43
+ * @param {number[] } nums
44
+ * @return {number }
45
+ */
46
+ var longestConsecutive = function ( nums ) {
47
+ let longest = 0 ;
48
+ const numSet = new Set ( nums ) ;
49
+
50
+ for ( const num of numSet ) {
51
+ if ( numSet . has ( num - 1 ) ) continue ;
52
+ let length = 1 ;
53
+
54
+ while ( numSet . has ( num + length ) ) length ++ ;
55
+
56
+ longest = Math . max ( length , longest ) ;
57
+ }
58
+
59
+ return longest ;
60
+ }
Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[] } nums
3
+ * @param {number } k
4
+ * @return {number[] }
5
+ */
6
+
7
+ /*
8
+ * 시간 복잡도: O(n log n)
9
+ * 공간 복잡도: O(n)
10
+ *
11
+ * 1. map 구조를 사용해서 몇번 나왔는지 카운트한다.
12
+ * 2. map 구조에서 가장 큰 수를 구한다.
13
+ */
14
+ var topKFrequent = function ( nums , k ) {
15
+ const map = new Map ( ) ;
16
+
17
+ for ( let i = 0 ; i < nums . length ; i ++ ) {
18
+ if ( ! map . has ( nums [ i ] ) ) {
19
+ map . set ( nums [ i ] , 1 ) ;
20
+ } else {
21
+ map . set ( nums [ i ] , map . get ( nums [ i ] ) + 1 ) ;
22
+ }
23
+ }
24
+
25
+ const result = [ ...map . entries ( ) ] . sort ( ( a , b ) => b [ 1 ] - a [ 1 ] ) ;
26
+
27
+ return result . slice ( 0 , k ) . map ( ( val ) => val [ 0 ] ) ;
28
+ } ;
Original file line number Diff line number Diff line change
1
+ /**
2
+ * solve 1
3
+ *
4
+ * 시간 복잡도: O(n^2)
5
+ * 공간 복잡도: O(1)
6
+ *
7
+ * @param {number[] } nums
8
+ * @param {number } target
9
+ * @return {number[] }
10
+ */
11
+ var twoSum = function ( nums , target ) {
12
+ const length = nums . length - 1 ;
13
+
14
+ for ( let i = 0 ; i < length ; i ++ ) {
15
+ for ( let j = length ; j > 0 ; j -- ) {
16
+ const sum = nums [ i ] + nums [ j ] ;
17
+
18
+ if ( i !== j ) {
19
+ if ( sum === target ) {
20
+ return [ i , j ] ;
21
+ }
22
+ }
23
+ }
24
+ }
25
+ } ;
26
+
27
+
28
+ /**
29
+ * solve 2
30
+ *
31
+ * 시간 복잡도: O(n)
32
+ * 공간 복잡도: O(n)
33
+ *
34
+ * @param {number[] } nums
35
+ * @param {number } target
36
+ * @return {number[] }
37
+ */
38
+ var twoSum = function ( nums , target ) {
39
+ const map = new Map ( ) ;
40
+
41
+ for ( let i = 0 ; i < nums . length ; i ++ ) {
42
+ const temp = target - nums [ i ] ;
43
+
44
+ if ( map . has ( temp ) ) {
45
+ return [ map . get ( temp ) , i ] ;
46
+ }
47
+
48
+ map . set ( nums [ i ] , i ) ;
49
+ }
50
+ } ;
You can’t perform that action at this time.
0 commit comments