File tree Expand file tree Collapse file tree 5 files changed +107
-0
lines changed
longest-consecutive-sequence Expand file tree Collapse file tree 5 files changed +107
-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+ var containsDuplicate = function ( nums ) {
8+ const counter = new Map ( ) ;
9+ for ( let e of nums ) {
10+ const v = counter . has ( e ) ? counter . get ( e ) + 1 : 1 ;
11+ counter . set ( e , v ) ;
12+ }
13+ const answer = [ ...counter . values ( ) ] . some ( ( item ) => item >= 2 ) ;
14+ return answer ;
15+ } ;
16+ // 두번째 제출
17+ var containsDuplicate = function ( nums ) {
18+ return new Set ( nums ) . size !== nums . length ;
19+ } ;
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+ const N = nums . length ;
7+ let answer = 0 ;
8+ let [ rob1 , rob2 ] = [ 0 , 0 ] ;
9+ for ( let num of nums ) {
10+ let temp = Math . max ( num + rob1 , rob2 ) ;
11+ rob1 = rob2 ;
12+ rob2 = temp ;
13+ }
14+ return rob2 ;
15+ } ;
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+ let answer = 0 ;
8+ let numsSet = new Set ( nums ) ;
9+ const N = nums . length ;
10+
11+ for ( let num of numsSet ) {
12+ if ( ! numsSet . has ( num - 1 ) ) {
13+ let temp = num ;
14+ let length = 1 ;
15+
16+ while ( numsSet . has ( temp + 1 ) ) {
17+ length += 1 ;
18+ temp += 1 ;
19+ }
20+ // console.log(length)
21+ answer = Math . max ( length , answer ) ;
22+ }
23+ }
24+
25+ return answer ;
26+ } ;
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+ nums = nums . sort ( ( a , b ) => a - b ) ;
8+ const counter = new Map ( ) ;
9+ for ( let num of nums ) {
10+ const value = counter . has ( num ) ? counter . get ( num ) + 1 : 1 ;
11+ counter . set ( num , value ) ;
12+ }
13+ const sorted = [ ...counter . entries ( ) ] . sort ( ( a , b ) => b [ 1 ] - a [ 1 ] ) ;
14+ const answer = sorted . slice ( 0 , k ) . map ( ( item ) => item [ 0 ] ) ;
15+ // console.log(counter, sorted, answer)
16+
17+ return answer ;
18+ } ;
Original file line number Diff line number Diff line change 1+ /**
2+ * @param {number[] } nums
3+ * @param {number } target
4+ * @return {number[] }
5+ */
6+
7+ // 첫번째 통과 풀이 - 브루트포스
8+ var twoSum = function ( nums , target ) {
9+ for ( let i = 0 ; i < nums . length ; i ++ ) {
10+ for ( let j = i + 1 ; j < nums . length ; j ++ ) {
11+ if ( nums [ i ] + nums [ j ] == target ) {
12+ return [ i , j ] ;
13+ }
14+ }
15+ }
16+ } ;
17+
18+ // 두번째 통과 풀이 - 해시맵 + 효율성 고려
19+ var twoSum = function ( nums , target ) {
20+ const map = new Map ( ) ; // {값: 인덱스}
21+
22+ for ( let i = 0 ; i < nums . length ; i ++ ) {
23+ const complement = target - nums [ i ] ; // 필요한 짝 계산
24+ if ( map . has ( complement ) ) {
25+ return [ map . get ( complement ) , i ] ; // 이전에 complement가 있었으면 바로 반환
26+ }
27+ map . set ( nums [ i ] , i ) ;
28+ }
29+ } ;
You can’t perform that action at this time.
0 commit comments