File tree Expand file tree Collapse file tree 5 files changed +97
-0
lines changed
longest-consecutive-sequence Expand file tree Collapse file tree 5 files changed +97
-0
lines changed Original file line number Diff line number Diff line change 1+ // Time complexity: O(n)
2+ // Space complexity: O(n)
3+
4+ /**
5+ * @param {number[] } nums
6+ * @return {boolean }
7+ */
8+ var containsDuplicate = function ( nums ) {
9+ const set = new Set ( nums ) ;
10+
11+ return set . size !== nums . length ;
12+ } ;
Original file line number Diff line number Diff line change 1+ // Time complexity: O(n)
2+ // Space complexity: O(n)
3+
4+ /**
5+ * @param {number[] } nums
6+ * @return {number }
7+ */
8+ var rob = function ( nums ) {
9+ const n = nums . length ;
10+ const dp = Array . from ( { length : n + 1 } , ( ) => 0 ) ;
11+ dp [ 1 ] = nums [ 0 ] ;
12+
13+ for ( let i = 2 ; i < n + 1 ; i ++ ) {
14+ dp [ i ] = Math . max ( dp [ i - 1 ] , dp [ i - 2 ] + nums [ i - 1 ] ) ;
15+ }
16+
17+ return dp . at ( - 1 ) ;
18+ } ;
Original file line number Diff line number Diff line change 1+ // Time complexity: O(n)
2+ // Space complexity: O(n)
3+
4+ /**
5+ * @param {number[] } nums
6+ * @return {number }
7+ */
8+ var longestConsecutive = function ( nums ) {
9+ let answer = 0 ;
10+ const consecutiveDict = new Map ( ) ;
11+
12+ for ( const num of nums ) {
13+ consecutiveDict . set ( num , true ) ;
14+ }
15+
16+ for ( const num of nums ) {
17+ if ( consecutiveDict . has ( num - 1 ) ) {
18+ continue ;
19+ }
20+
21+ let length = 1 ;
22+ while ( consecutiveDict . has ( num + length ) ) {
23+ length ++ ;
24+ }
25+
26+ answer = Math . max ( answer , length ) ;
27+ }
28+
29+ return answer ;
30+ } ;
Original file line number Diff line number Diff line change 1+ // Time complexity: O(nlogn)
2+ // Space complexity: O(n)
3+
4+ /**
5+ * @param {number[] } nums
6+ * @param {number } k
7+ * @return {number[] }
8+ */
9+ var topKFrequent = function ( nums , k ) {
10+ const frequencyDict = new Map ( ) ;
11+
12+ for ( const num of nums ) {
13+ if ( frequencyDict . has ( num ) ) {
14+ frequencyDict . set ( num , frequencyDict . get ( num ) + 1 ) ;
15+ } else {
16+ frequencyDict . set ( num , 1 ) ;
17+ }
18+ }
19+
20+ const entries = [ ...frequencyDict . entries ( ) ] ;
21+ entries . sort ( ( a , b ) => b [ 1 ] - a [ 1 ] ) ;
22+
23+ return entries . slice ( 0 , k ) . map ( ( entry ) => entry [ 0 ] ) ;
24+ } ;
Original file line number Diff line number Diff line change 1+ // Time complexity: O(n)
2+ // Space complexity: O(n)
3+
4+ /**
5+ * @param {string } s
6+ * @return {boolean }
7+ */
8+ var isPalindrome = function ( s ) {
9+ const normalized = s . toLowerCase ( ) . replace ( / [ ^ a - z 0 - 9 ] / g, "" ) ;
10+ const reversed = normalized . split ( "" ) . reverse ( ) . join ( "" ) ;
11+
12+ return normalized === reversed ;
13+ } ;
You can’t perform that action at this time.
0 commit comments