File tree Expand file tree Collapse file tree 5 files changed +92
-0
lines changed
longest-consecutive-sequence Expand file tree Collapse file tree 5 files changed +92
-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 numsSet = new Set ( ) ;
7
+ nums . forEach ( num => numsSet . add ( num ) ) ;
8
+
9
+ return nums . length !== numsSet . size ;
10
+ } ;
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
+ if ( nums . length < 2 ) {
7
+ return Math . max ( nums ) ;
8
+ }
9
+
10
+ let twoBefore = 0 ;
11
+ let oneBefore = 0 ;
12
+
13
+ nums . forEach ( num => {
14
+ const prevOneBefore = oneBefore ;
15
+ oneBefore = Math . max ( prevOneBefore , twoBefore + num ) ;
16
+ twoBefore = prevOneBefore ;
17
+ } ) ;
18
+
19
+ return Math . max ( oneBefore , twoBefore ) ;
20
+ } ;
Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[] } nums
3
+ * @return {number }
4
+ */
5
+
6
+ var longestConsecutive = function ( nums ) {
7
+ const numSet = new Set ( nums ) ;
8
+
9
+ let maxLength = 0 ;
10
+ let currentLength = 0 ;
11
+
12
+ const countConsecutive = ( num , step ) => {
13
+ let currentNum = num ;
14
+ while ( numSet . has ( currentNum ) ) {
15
+ numSet . delete ( currentNum ) ;
16
+ currentNum += step ;
17
+ currentLength += 1 ;
18
+ }
19
+ }
20
+
21
+ nums . forEach ( num => {
22
+ countConsecutive ( num , 1 ) ;
23
+ countConsecutive ( num - 1 , - 1 ) ;
24
+
25
+ maxLength = Math . max ( maxLength , currentLength ) ;
26
+ currentLength = 0 ;
27
+ } ) ;
28
+
29
+ return maxLength ;
30
+ } ;
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 numsMap = { } ;
8
+
9
+ nums . forEach ( num => {
10
+ numsMap [ num ] ? numsMap [ num ] += 1 : numsMap [ num ] = 1 ;
11
+ } ) ;
12
+
13
+ return Object . entries ( numsMap ) . sort ( ( a , b ) => b [ 1 ] - a [ 1 ] ) . slice ( 0 , k ) . map ( ( [ key ] ) => Number ( key ) ) ;
14
+ } ;
Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[] } nums
3
+ * @param {number } target
4
+ * @return {number[] }
5
+ */
6
+ var twoSum = function ( nums , target ) {
7
+ const numsMap = { } ;
8
+
9
+ for ( let i = 0 ; i < nums . length ; i ++ ) {
10
+ const needNum = target - nums [ i ] ;
11
+
12
+ if ( needNum in numsMap ) {
13
+ return [ i , numsMap [ needNum ] ] ;
14
+ }
15
+
16
+ numsMap [ nums [ i ] ] = i ;
17
+ }
18
+ } ;
You can’t perform that action at this time.
0 commit comments