File tree Expand file tree Collapse file tree 6 files changed +122
-0
lines changed
longest-common-subsequence Expand file tree Collapse file tree 6 files changed +122
-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 count = [ ] ;
7+ let res = false ;
8+
9+ for ( const num of nums ) {
10+ if ( count [ num ] ) {
11+ res = true ;
12+ break ;
13+ } else {
14+ count [ num ] = 1 ;
15+ }
16+ }
17+ return res ;
18+ } ;
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+ if ( n === 1 ) return nums [ 0 ] ;
8+ if ( n === 2 ) return Math . max ( nums [ 0 ] , nums [ 1 ] ) ;
9+ const dp = [ nums [ 0 ] , nums [ 1 ] , nums [ 2 ] + nums [ 0 ] ] ;
10+
11+ for ( let i = 3 ; i < n ; i ++ ) {
12+ const tmp1 = dp [ i - 2 ] + nums [ i ]
13+ const tmp2 = dp [ i - 3 ] + nums [ i ]
14+ dp [ i ] = tmp1 > tmp2 ? tmp1 : tmp2
15+ }
16+ return dp [ n - 1 ] > dp [ n - 2 ] ? dp [ n - 1 ] : dp [ n - 2 ]
17+ } ;
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+ const set = new Set ( ) ;
7+
8+ // set 생성 : O(n)
9+ for ( const num of nums ) {
10+ set . add ( num ) ;
11+ }
12+
13+ let res = 0 ;
14+
15+ // set 순회 : O(n)
16+ for ( const num of set ) {
17+ if ( set . has ( num - 1 ) ) continue ;
18+ let tmp = 1 ;
19+ let cur = num ;
20+ // While 루프 전체: O(n)
21+ while ( true ) {
22+ const v = ( cur += 1 ) ;
23+ if ( set . has ( v ) ) tmp += 1 ;
24+ else break ;
25+ }
26+ if ( tmp > res ) res = tmp ;
27+ }
28+ return res ;
29+ } ;
Original file line number Diff line number Diff line change 1+ /**
2+ * @param {number } n
3+ * @return {number }
4+ */
5+ var hammingWeight = function ( n ) {
6+ let res = 0 ;
7+ while ( n > 0 ) {
8+ res += n & 1 ;
9+ n = n >> 1 ; // 나누기 2
10+ }
11+ return res ;
12+ } ;
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+ const countMap = new Map ( ) ;
8+ for ( const num of nums ) {
9+ if ( countMap . has ( num ) ) {
10+ countMap . set ( num , countMap . get ( num ) + 1 ) ;
11+ } else {
12+ countMap . set ( num , 1 ) ;
13+ }
14+ }
15+ const countArr = [ ...countMap ] ;
16+ countArr . sort ( ( a , b ) => b [ 1 ] - a [ 1 ] ) ;
17+
18+ const res = countArr . slice ( 0 , k ) . map ( ( count ) => count [ 0 ] ) ;
19+ return res ;
20+ } ;
Original file line number Diff line number Diff line change 1+ // Time Complexity : O(N^2)
2+
3+ var twoSum = function ( nums , target ) {
4+ const l = nums . length ;
5+ for ( let i = 0 ; i < l ; i ++ ) {
6+ for ( let j = i + 1 ; j < l ; j ++ ) {
7+ const value = nums [ i ] + nums [ j ] ;
8+ if ( value == target ) return [ i , j ] ;
9+ }
10+ }
11+ } ;
12+
13+ // Time Complexity : O(N)
14+
15+ var twoSum = function ( nums , target ) {
16+ const Map = { } ;
17+
18+ nums . forEach ( ( num , idx ) => {
19+ Map [ num ] = idx ;
20+ } ) ;
21+
22+ for ( const idx in nums ) {
23+ const value = target - nums [ idx ] ;
24+ if ( Map [ value ] >= 0 && Map [ value ] != idx ) return [ + idx , Map [ value ] ] ;
25+ }
26+ } ;
You can’t perform that action at this time.
0 commit comments