Для каждого элемента в массиве, который вы проверяете, он не равен первым и последней позиции:
//❌ ✔️
//? ?
[0, 1, 1, 1, 1, 1, 1, 1]
//⬆️
Теперь для первого элемента (который нужно найти),сравнение с последним элементом приведет к «неравному», потому что 0 не равно 1, но проверка первого приведет к «равному» при сравнении элемента с самим элементом.
Чтобы он обнаружил первый и последний элемент, не проверяйте, не равняется ли он первому и последнему, но если он не равен предыдущему и следующему, затем переходите к концу илиначинается, когда индекс покидает массив.
Через это он также работает для последнего и первого элемента:
// ✔️ ✔️
// ? ?
[0, 1, 1, 1, 1, 1, 1, 1]
//⬆️