Leetcode Java Longest Consecutive Sequence
업데이트:
문제
코드
class Solution {
public int longestConsecutive(int[] nums) {
if (nums.length == 0) {
return 0;
}
Arrays.sort(nums);
int curr = nums[0];
int sum = 1;
int count = 1;
for (int i = 1; i < nums.length; i++) {
if (nums[i - 1] == nums[i]) {
continue;
} else if (nums[i] == curr + 1) {
curr++;
sum++;
count = Math.max(count, sum);
} else {
curr = nums[i];
sum = 1;
}
}
return count;
}
}
결과
설명
-
주어진 숫자 배열 nums의 값들을 이용하여 가장 많이 연속된 숫자의 개수를 계산하는 문제이다.
-
배열 nums가 비어있을 경우, 주어진 문제의 결과로 0을 반환한다.
-
연속된 숫자들을 효율적으로 확인하기 위해서 배열을 정렬해준다.
- 문제 풀이에 필요한 변수를 정의한다.
- curr은 주어진 배열 nums의 값을 하나씩 가져와 저장할 임시 변수로, nums[0]으로 초기화 한다.
- sum은 연속된 숫자의 합을 저장할 변수로, 1로 초기화 한다.
- count는 연속된 숫자의 개수가 최대인 값을 저장하는 변수로, 1로 초기화 한다.
- 주어진 배열 nums를 반복하여 연속된 숫자가 최대인 개수를 계산한다.
- nums[$i - 1$]의 값과 nums[i]의 값이 동일하면, 반복 계속 진행한다.
- nums[i]의 값이 $curr + 1$이면 curr과 sum을 증가시키고, sum과 count 중 큰 값을 count에 넣어준다.
- 그 외의 경우 연속된 숫자가 아니므로, curr에 nums[i]를 넣고 sum을 1로 초기화 한다.
- 반복이 완료되면 연속된 숫자의 개수가 최대인 값을 저장한 count를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기