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