💡 정렬되어 있지 않은 정수형 배열 nums가 주어졌다. nums 원소를 가지고 만들 수 있는 가장 긴 연속된 수의 갯수는 몇개인지 반환하시오.
1, 2, 3, 4
public static int getLongestConsecutive(int[] nums) {
if (nums.length == 0) {
return 0;
}
int result = 1;
Set<Integer> set = initNumsSet(nums);
for (int num : nums) {
int count = getConsecutiveCount(set, num);
result = Math.max(result, count);
}
return result;
}
public static Set<Integer> initNumsSet(int[] nums) {
Set<Integer> result = new HashSet<>();
for (int num : nums) {
result.add(num);
}
return result;
}
public static int getConsecutiveCount(Set<Integer> set, int num) {
int result = 1;
if (!set.contains(num - 1)) {
while (set.contains(num + 1)) {
num++;
result++;
}
}
return result;
}
@Test
void getLongestConsecutive() {
int result = LongestConsecutive.getLongestConsecutive(new int[]{100, 4, 200, 1, 3, 2});
int result2 = LongestConsecutive.getLongestConsecutive(new int[]{0, 3, 7, 2, 5, 8, 4, 6, 0, 1});
int result3 = LongestConsecutive.getLongestConsecutive(new int[]{});
Assertions.assertEquals(4, result);
Assertions.assertEquals(9, result2);
Assertions.assertEquals(0, result3);
}
접근 방법이 좋은 것 같아요😮