public static int longest_sequence(int[] array) {
if (array.length == 0)
return 0;
int length = 1;
int ans = 1;
Arrays.sort(array);
for (int i = 0; i < array.length - 1; i++)
{
if(array[i] == array[i+1]) {
continue;
}
else if (array[i] + 1 == array[i + 1])
{
length++;
}
else
{
length = 1;
}
ans = Math.max(ans,length);
}
return ans;
}
Хорошо, при условии, что самая длинная последовательная последовательность не должна быть заказана, вы можете сделать несколько вещей:
- Длина всегда может быть равна единице, потому что самая длинная последовательная последовательность всегда будет содержать одно число, если только входной массив пуст.
- Вам нужно пропустить равные последовательные числа, что будет в первом случае, если продолжит итерацию.
- Вам не нужен conscutive_array, достаточно одной переменной для хранения длины самой длинной последовательной последовательности, что делает переменная ans.