fn shortest_identical_consecutive_subarray(vec: &[i32]) -> Vec<i32> {
if vec.is_empty() {
return Vec::new();
}
let mut best_start = 0usize;
let mut best_len = vec.len();
let mut current_start = 0usize;
let mut current_len = 1usize;
for i in 1..vec.len() {
if vec[i] == vec[i - 1] {
current_len += 1;
} else {
if current_len < best_len {
best_len = current_len;
best_start = current_start;
}
current_start = i;
current_len = 1;
}
}
if current_len < best_len {
best_len = current_len;
best_start = current_start;
}
vec[best_start..best_start + best_len].to_vec()
}
fn main() {
let vec = vec![
3, 3, 3,
7, 7, 7, 7, 7,
2, 2,
5, 5, 5, 5,
9, 9, 9, 9, 9, 9,
];
let result = shortest_identical_consecutive_subarray(&vec);
print!("Array result: ");
for x in result {
print!("{} ", x);
}
}
/*
run:
Array result: 2 2
*/