File tree Expand file tree Collapse file tree 5 files changed +101
-0
lines changed
longest-consecutive-sequence Expand file tree Collapse file tree 5 files changed +101
-0
lines changed Original file line number Diff line number Diff line change
1
+ function containsDuplicate ( nums : number [ ] ) : boolean {
2
+ return new Set < number > ( nums ) . size !== nums . length ;
3
+ }
Original file line number Diff line number Diff line change
1
+ // 0ms
2
+ function rob ( nums : number [ ] ) : number {
3
+ const n = nums . length ;
4
+
5
+ if ( n === 1 ) return nums [ 0 ] ;
6
+ if ( n === 2 ) return Math . max ( nums [ 0 ] , nums [ 1 ] ) ;
7
+
8
+ const dp : number [ ] = Array ( n ) . fill ( 0 ) ;
9
+ dp [ 0 ] = nums [ 0 ] ;
10
+ dp [ 1 ] = Math . max ( nums [ 0 ] , nums [ 1 ] ) ;
11
+
12
+ for ( let i = 2 ; i < n ; i ++ ) {
13
+ dp [ i ] = Math . max ( dp [ i - 2 ] + nums [ i ] , dp [ i - 1 ] ) ;
14
+ }
15
+
16
+ return dp [ n - 1 ] ;
17
+ }
18
+
19
+ // 1ms
20
+ /*
21
+ function rob(nums: number[]): number {
22
+ const n = nums.length;
23
+
24
+ const dp: number[][] = Array.from({ length: n }, () => Array(2).fill(0));
25
+
26
+ dp[0][1] = nums[0];
27
+
28
+ for (let i = 1; i < n; i++) {
29
+ dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1]);
30
+ dp[i][1] = dp[i - 1][0] + nums[i];
31
+ }
32
+
33
+ return Math.max(...dp[n - 1]);
34
+ }
35
+ */
Original file line number Diff line number Diff line change
1
+ function longestConsecutive ( nums : number [ ] ) : number {
2
+ if ( nums . length === 0 ) return 0 ;
3
+
4
+ const numSet = new Set < number > ( nums ) ;
5
+ let longest = 0 ;
6
+
7
+ for ( const num of numSet ) {
8
+ if ( ! numSet . has ( num - 1 ) ) {
9
+ let currentNum = num ;
10
+ let sequenceLength = 1 ;
11
+
12
+ while ( numSet . has ( currentNum + 1 ) ) {
13
+ currentNum ++ ;
14
+ sequenceLength ++ ;
15
+ }
16
+
17
+ longest = Math . max ( longest , sequenceLength ) ;
18
+ }
19
+ }
20
+
21
+ return longest ;
22
+ }
Original file line number Diff line number Diff line change
1
+ function topKFrequent ( nums : number [ ] , k : number ) : number [ ] {
2
+ nums . sort ( ( a , b ) => a - b ) ;
3
+
4
+ const countMap = new Map < number , number > ( ) ;
5
+
6
+ let pointer = 0 ;
7
+ while ( pointer < nums . length ) {
8
+ const currentNumber = nums [ pointer ] ;
9
+ let count = 0 ;
10
+
11
+ while ( nums [ pointer ] === currentNumber ) {
12
+ pointer ++ ;
13
+ count ++ ;
14
+ }
15
+
16
+ countMap . set ( currentNumber , count ) ;
17
+ }
18
+
19
+ const result = Array . from ( countMap )
20
+ . sort ( ( a , b ) => b [ 1 ] - a [ 1 ] )
21
+ . slice ( 0 , k )
22
+ . map ( ( value ) => value [ 0 ] ) ;
23
+
24
+ return result ;
25
+ }
Original file line number Diff line number Diff line change
1
+ function twoSum ( nums : number [ ] , target : number ) : number [ ] {
2
+ const numsLen = nums . length ;
3
+ const result : number [ ] = [ ] ;
4
+
5
+ for ( let i = 0 ; i < numsLen - 1 ; i ++ ) {
6
+ for ( let j = i + 1 ; j < numsLen ; j ++ ) {
7
+ if ( nums [ i ] + nums [ j ] === target ) {
8
+ result . push ( i ) ;
9
+ result . push ( j ) ;
10
+ break ;
11
+ }
12
+ }
13
+ }
14
+
15
+ return result ;
16
+ }
You can’t perform that action at this time.
0 commit comments