Skip to content

Commit c1e8ec3

Browse files
committed
feat: longest-consecutive-sequence solution
1 parent 1b91949 commit c1e8ec3

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/**
2+
* 가장 긴 연속의 시퀀스 구하기
3+
* @param nums
4+
*/
5+
function longestConsecutive(nums: number[]): number {
6+
7+
// length 가 0, 1 인 경우
8+
if(nums.length < 2)
9+
return nums.length; // 0, 1
10+
11+
// 정렬
12+
nums = nums.sort((a, b) => a - b)
13+
14+
// 접근 (1) 처음 연속된 count만 리턴함 =============
15+
// let count = 1
16+
// for(let i = 0; i < nums.length-1; i++) {
17+
// if(nums[i] === nums[i+1]) {
18+
// continue;
19+
// } else if(nums[i] - nums[i+1] === 1) {
20+
// count++;
21+
// } else {
22+
// break;
23+
// }
24+
// };
25+
// console.log(count);
26+
// return count;
27+
28+
// =========
29+
30+
let longest = 0;
31+
let temp = 1;
32+
33+
for(let i = 0; i < nums.length-1; i++) {
34+
if(nums[i] === nums[i + 1]) {
35+
// console.log(nums[i], '===', nums[i+1])
36+
continue;
37+
} else if(nums[i] + 1 === nums[i + 1] ) {
38+
// console.log(nums[i], '+ 1 =', nums[i+1])
39+
temp += 1;
40+
} else {
41+
// console.log(longest, ' - ', temp)
42+
longest = Math.max(temp, longest);
43+
temp = 1;
44+
}
45+
}
46+
47+
// i가 마지막인 경우 for문의 else문을 타지 않으므로 다시 한번 체크함
48+
longest = Math.max(temp, longest);
49+
return longest;
50+
};

0 commit comments

Comments
 (0)