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