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