import java.util.Vector;
import java.util.Arrays;
public class ShortestRunProgram {
public static Vector<Integer> shortest_identical_consecutive_subvector(Vector<Integer> vec) {
if (vec.isEmpty()) return new Vector<>();
int bestStart = 0;
int bestLen = vec.size();
int currentStart = 0;
int currentLen = 1;
for (int i = 1; i < vec.size(); i++) {
if (vec.get(i).equals(vec.get(i - 1))) {
currentLen++;
} else {
if (currentLen < bestLen) {
bestLen = currentLen;
bestStart = currentStart;
}
currentStart = i;
currentLen = 1;
}
}
if (currentLen < bestLen) {
bestLen = currentLen;
bestStart = currentStart;
}
Vector<Integer> result = new Vector<>();
for (int i = bestStart; i < bestStart + bestLen; i++) {
result.add(vec.get(i));
}
return result;
}
// ------------------------------------------------------------
// MAIN PROGRAM
// ------------------------------------------------------------
public static void main(String[] args) {
Vector<Integer> vec = new Vector<>(Arrays.asList(3,3,3, 7,7,7,7,7, 2,2, 5,5,5,5, 9,9,9,9,9,9));
Vector<Integer> resultVec = shortest_identical_consecutive_subvector(vec);
System.out.print("Vector result: ");
for (int x : resultVec) System.out.print(x + " ");
}
}
/*
run:
Vector result: 2 2
*/