File tree Expand file tree Collapse file tree 5 files changed +135
-0
lines changed
longest-consecutive-sequence Expand file tree Collapse file tree 5 files changed +135
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * @param {number[] } nums
3+ * @return {boolean }
4+ */
5+
6+ /**
7+ * 1차 풀이
8+ * - Map을 사용하여 각 숫자의 개수를 세는 방법
9+ */
10+ var containsDuplicate = function ( nums ) {
11+ let dict = new Map ( ) ;
12+
13+ nums . forEach ( ( num ) => {
14+ if ( dict . has ( num ) ) {
15+ dict . set ( num , dict . get ( num ) + 1 ) ;
16+ } else {
17+ dict . set ( num , 1 ) ;
18+ }
19+ } )
20+
21+ for ( const num of nums ) {
22+ if ( dict . get ( num ) >= 2 ) {
23+ return true ;
24+ }
25+ }
26+ return false ;
27+ } ;
28+
29+ /**
30+ * 2차풀이
31+ * - Map을 사용하여 각 숫자의 개수를 세는 방법
32+ * - forEach를 사용하지 않고 for of문을 사용하여 반복문을 돌리는 방법
33+ */
34+ var containsDuplicate = function ( nums ) {
35+ let dict = new Map ( ) ;
36+
37+ for ( const num of nums ) {
38+ if ( dict . has ( num ) ) {
39+ dict . set ( num , dict . get ( num ) + 1 ) ;
40+ } else {
41+ dict . set ( num , 1 ) ;
42+ }
43+ if ( dict . get ( num ) >= 2 ) {
44+ return true ;
45+ }
46+ }
47+ return false ;
48+ } ;
Original file line number Diff line number Diff line change 1+ /**
2+ * @param {number[] } nums
3+ * @return {number }
4+ */
5+ var rob = function ( nums ) {
6+ if ( nums . length === 0 ) return 0 ;
7+ if ( nums . length === 1 ) return nums [ 0 ] ;
8+
9+ let dp = new Array ( nums . length ) ;
10+ dp [ 0 ] = nums [ 0 ] ;
11+ dp [ 1 ] = Math . max ( nums [ 0 ] , nums [ 1 ] ) ;
12+
13+ for ( let i = 2 ; i < nums . length ; i ++ ) {
14+ dp [ i ] = Math . max ( dp [ i - 1 ] , nums [ i ] + dp [ i - 2 ] ) ;
15+ }
16+
17+ return dp [ nums . length - 1 ] ;
18+ } ;
Original file line number Diff line number Diff line change 1+ /**
2+ * @param {number[] } nums
3+ * @return {number }
4+ */
5+ var longestConsecutive = function ( nums ) {
6+ if ( nums . length === 0 ) return 0 ;
7+
8+ const numSet = new Set ( nums ) ;
9+ let maxLength = 0 ;
10+
11+ for ( let num of numSet ) {
12+ // 연속 수열의 시작점인지 확인
13+ if ( ! numSet . has ( num - 1 ) ) {
14+ let currentNum = num ;
15+ let currentLength = 1 ;
16+
17+ // 연속된 숫자 있는 동안 증가
18+ while ( numSet . has ( currentNum + 1 ) ) {
19+ currentNum += 1 ;
20+ currentLength += 1 ;
21+ }
22+
23+ maxLength = Math . max ( maxLength , currentLength ) ;
24+ }
25+ }
26+
27+ return maxLength ;
28+ } ;
Original file line number Diff line number Diff line change 1+ /**
2+ * @param {number[] } nums
3+ * @param {number } k
4+ * @return {number[] }
5+ */
6+ var topKFrequent = function ( nums , k ) {
7+ let dict = new Map ( ) ;
8+ let temp = Array . from ( new Set ( [ ...nums ] ) ) ;
9+ for ( const num of nums ) {
10+ if ( dict . has ( num ) ) {
11+ dict . set ( num , dict . get ( num ) + 1 ) ;
12+ } else {
13+ dict . set ( num , 1 ) ;
14+ }
15+ }
16+
17+ temp = temp . sort ( ( a , b ) => {
18+ let aCount = dict . get ( a ) ;
19+ let bCount = dict . get ( b ) ;
20+
21+ return bCount - aCount ;
22+ } )
23+
24+ let slice = temp . slice ( 0 , k ) ;
25+ return slice ;
26+ } ;
Original file line number Diff line number Diff line change 1+ /**
2+ * @param {number[] } nums
3+ * @param {number } target
4+ * @return {number[] }
5+ */
6+ var twoSum = function ( nums , target ) {
7+ let dict = new Map ( ) ;
8+
9+ for ( const [ index , num ] of nums . entries ( ) ) {
10+ if ( dict . has ( target - num ) && dict . get ( target - num ) != index ) {
11+ return [ dict . get ( target - num ) , index ] ;
12+ }
13+ dict . set ( num , index ) ;
14+ }
15+ } ;
You can’t perform that action at this time.
0 commit comments