// Привет всем, что я создал алгоритм работает так, как я его разработал, но я хочу добавить и новые функциональные возможности для него.
Если вы введете, например, следующие шесть чисел: 5 2 12 4 3 9 Вы получите обратно: Длина самой длинной последовательной последовательности = 4 Значения самой длинной последовательной последовательности: [2, 3, 4, 5, 9, 12]
То, что я хочу распечатать, равно:
Если вы введете, например, следующие шесть чисел: 5 2 12 4 3 9 Вы вернетесь: Длина самой длинной последовательной последовательности = 4 Самые длинные значения последовательной последовательности: [2, 3, 4, 5]
Где он включает в себя только номера самой длинной последовательности. Буду признателен за любую помощь или советы, обещаю, что я не буду публиковать некоторое время после этого.
String ws = is.readUTF();
String[] wordSequence = ws.split(" ");
// decide the response
int size = wordSequence.length;
int[] arr = new int[size];
for (int i = 0; i < size; i++) {
arr[i] = Integer.parseInt(wordSequence[i]);
}
int n = arr.length;
HashSet<Integer> a = new HashSet<>();
int ans = 0;
for (int i = 0; i < n; ++i) {
a.add(arr[i]);
}
// check each possible sequence from the start
// then update optimal length
for (int i = 0; i < n; ++i) {
// if current element is the starting
// element of a sequence
if (!a.contains(arr[i] - 1)) {
// Then check for next elements in the
// sequence
int j = arr[i];
while (a.contains(j)) {
j++;
}
// update optimal length if this length
// is more
if (ans < j - arr[i]) {
ans = j - arr[i];
}
}
}
System.out.println("The largest consecutive subsequence is = " + ans);
os.write(ans + "\n");
os.flush();
System.out.println("Displaying the subsequence " + a.toString());
String hashtag = a.toString();
os.write(hashtag + "\n" );
os.flush();