Привет.
Есть массив -
[0,1,0,1]
Его нужно отсортировать таким образом, что-бы 0 или 1 были в концах ( неважно в каких ) и вывести число, за сколько шагом мы его отсортировали.
Результатом должно быть - 1. То есть 1 шаг.
[0,0,1,1]
Эту сортировку нужно сделать за наиболее меньше шагов. То есть мы могли отсортировать этот массив так что-бы [1,1,0,0] , но занято бы много шагом ( >1).
Еще один пример, когда в массиве не только 0 и 1.
[8,1,1,1,1,0,0,0,0]
- тут нам не надо ничего сортировать, поэтому результат должен быть - 0.
Мой пример
function minMoves(arr) {
let j = -1;
let result = 0;
const filteredArray = arr.filter(el => el === 1 || el === 0);
for(let i = 0; i < filteredArray.length; i++) {
if(filteredArray[i] < 1) {
j++;
let temp = filteredArray[j];
filteredArray[j] = filteredArray[i];
filteredArray[i] = temp;
result += 1;
}
}
return result;
}
Но в моем примере оно начинает его сортировать если все хорошо
[1,1,1,1,0,0,0] = [0,0,0,1,1,1,1]