Open hsskey opened 1 month ago
sort를 이용한 풀이
function longestConsecutive(nums) {
if(nums.length === 0) return 0
const setNums = [...new Set(nums)]
setNums.sort((a, b) => a - b)
let longest = 0
for(let i = 0; i < setNums.length; i++) {
let cnt = 1
while(true) {
if(!setNums[i + 1] || setNums[i] + 1 !== setNums[i + 1]) {
break
}
cnt++
i++
}
longest = Math.max(cnt, longest)
}
return longest
}
Longest Consecutive Sequence
정렬되어 잇지 않은 정수형 배열 nums가 주어졌다. nums 원소를 가지고 만들 수 있는 가장 긴 연속된 수의 갯수는 몇개인지 반환하시오.
📝 제약조건
0 <= nums.length <= 10^5
-10^9 <= nums[i] <= 10^9
💡 예시
[100, 4, 200, 1, 3, 2]
4 (가장 긴 연속된 수: [1, 2, 3, 4])
[0, 3, 7, 2, 5, 8, 4, 6, 0, 1]
문제 해결 과정
Step 1: 문제 이해하기
n
(n이 커지면 커질수록 실행시간이 증가)-10^9 <= nums[i] <= 10^9
-2^31 ~ 2^31 - 1
로 표현을 할수 있는 자료형이다.(2 10^9 ~ 2 10^9 → int 자료형으로 충분히 표현가능한 숫자범위)Step 2: 접근 방법
100
을 봤을때 101이 있나? 나머지 모든곳을 한번 살펴 본다.4
를 보고나서 연속된 수인5
가 있나? 하면서 배열을 살펴본다개선할수 있는부분이 있다면?
next in nums)if 시작점일때 만
(조건문을 통과할때만 while문을 실행할수 있도록 변경)if prev not in nums_dict
메모리 사용
Step 3: 코드 설계
Step 4: 코드 구현