File tree Expand file tree Collapse file tree 5 files changed +116
-0
lines changed
longest-consecutive-sequence Expand file tree Collapse file tree 5 files changed +116
-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+ return nums . length !== new Set ( nums ) . size ;
7+ } ;
Original file line number Diff line number Diff line change 1+ /**
2+ * @param {number[] } nums
3+ * @return {number }
4+ */
5+
6+ // Bottom-Up DP (with constant space) 방식
7+
8+ // 시간 복잡도 (Time Complexity)
9+ // O(n) — 입력 배열의 크기에 비례하여 수행 시간이 증가
10+
11+ // 공간 복잡도 (Space Complexity)
12+ // O(1) — 입력 크기에 관계없이 사용하는 메모리 공간이 일정
13+
14+
15+ var rob = function ( nums ) {
16+
17+ if ( nums . length === 1 ) {
18+ return nums [ 0 ] ;
19+ }
20+
21+ let robbed_2 = nums [ 0 ] ;
22+ let robbed_1 = Math . max ( nums [ 0 ] , nums [ 1 ] ) ;
23+
24+ for ( let i = 2 ; i < nums . length ; i ++ ) {
25+
26+ const temp = robbed_1 ;
27+
28+ robbed_1 = Math . max ( robbed_1 , robbed_2 + nums [ i ] ) ;
29+
30+ robbed_2 = temp ;
31+
32+ }
33+
34+ return robbed_1 ;
35+
36+ } ;
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+ let result = [ ] ;
7+ let longest = [ ] ;
8+
9+ numsSorted = nums . sort ( ( a , b ) => a - b ) ;
10+
11+ numsFiltered = [ ...new Set ( numsSorted ) ] ;
12+
13+ for ( let i = 0 ; i < numsFiltered . length ; i ++ ) {
14+ if ( result . length === 0 ) {
15+ result . push ( numsFiltered [ i ] ) ;
16+ } else if ( result . length >= 1 ) {
17+ if ( numsFiltered [ i ] === result [ result . length - 1 ] + 1 ) {
18+ result . push ( numsFiltered [ i ] ) ;
19+ } else {
20+ longest . push ( result . length ) ;
21+ result = [ numsFiltered [ i ] ] ;
22+ }
23+ }
24+ }
25+
26+ if ( longest . length === 0 ) {
27+ return result . length ;
28+ } else {
29+ return Math . max ( Math . max ( ...longest ) , result . length ) ;
30+ }
31+ } ;
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 result = [ ] ;
8+
9+ const obj = nums . reduce ( ( acc , cur ) => {
10+ acc [ cur ] = ( acc [ cur ] || 0 ) + 1 ;
11+ return acc ;
12+ } , { } ) ;
13+
14+ const frequentValues = Object . values ( obj )
15+ . sort ( ( a , b ) => b - a )
16+ . slice ( 0 , k ) ;
17+
18+ for ( const [ key , value ] of Object . entries ( obj ) ) {
19+ if ( frequentValues . includes ( value ) ) {
20+ result . push ( parseInt ( key ) ) ;
21+ }
22+ }
23+
24+ return result ;
25+ } ;
Original file line number Diff line number Diff line change 1+ /**
2+ * @param {string } s
3+ * @return {boolean }
4+ */
5+ var isPalindrome = function ( s ) {
6+ const reg = / [ a - z 0 - 9 ] / g;
7+ const converted = s . toLowerCase ( ) . match ( reg ) ;
8+
9+ if ( converted === null ) {
10+ return true ;
11+ } else {
12+ const forward = converted . join ( "" ) ;
13+ const backward = converted . reverse ( ) . join ( "" ) ;
14+
15+ return forward === backward ;
16+ }
17+ } ;
You can’t perform that action at this time.
0 commit comments