File tree Expand file tree Collapse file tree 1 file changed +44
-0
lines changed
longest-consecutive-sequence Expand file tree Collapse file tree 1 file changed +44
-0
lines changed Original file line number Diff line number Diff line change 1+ function longestConsecutive ( nums : number [ ] ) : number {
2+ // 첫 시도: sort때문에 시간 복잡도가 O(n log n)라 O(n)에 풀어야 한다는 요구사항 만족하지 못함, 공간복잡도는 O(n)
3+ // if (nums.length === 0) return 0;
4+ // const sorted = [...new Set(nums)].sort((a, b) => a-b);
5+ // let max = 1;
6+ // let current = 1;
7+
8+ // for (let i=0; i<nums.length; i++) {
9+ // console.log(sorted[i])
10+ // if (sorted[i+1] - sorted[i] === 1) {
11+ // current += 1;
12+ // } else {
13+ // current = 1;
14+ // }
15+
16+ // max = Math.max(max, current);
17+ // }
18+
19+ // return max;
20+
21+ // 두번째 시도: 시간, 공간복잡도 O(n)
22+ if ( nums . length === 0 ) return 0 ;
23+
24+ const numSet = new Set ( nums ) ;
25+ let current = 0 ;
26+ let consecutive = 1 ;
27+ let max = 1 ;
28+
29+ for ( let num of numSet ) {
30+ if ( ! numSet . has ( num - 1 ) ) {
31+ current = num ;
32+ consecutive = 1 ;
33+
34+ while ( numSet . has ( current + 1 ) ) {
35+ consecutive += 1 ;
36+ current = current + 1 ;
37+ }
38+
39+ max = Math . max ( consecutive , max ) ;
40+ }
41+ }
42+
43+ return max ;
44+ } ;
You can’t perform that action at this time.
0 commit comments