@ABCquestion

Как массиве с повторяющимися нулями, перенести их вперед?

сделал так переместились все как поправить только для повторяющихся?
import java.util.Arrays;

class Main
{
	// Function to move all zeros present in the array to the end
	public static void reorder(int[] A)
	{
		// `k` stores the index of the next available position
		int k = A.length;
		// do for each element
		for (int i = k - 1; i >= 0 ; i--)
		{
			// if the current element is non-zero, put the element at the
			// next free position in the array
			if (A[i] != 0) {
				A[--k] = A[i];
			}
		}

		// move all 0's to the end of the array (remaining indices)
		for (int i = 0; i < k; i++) {
			A[i++] = 0;
		}
	}

	public static void main(String[] args)
	{
		int[] A = { 6, 0, 8, 2, 3, 0, 4, 0, 1, 2 };

// если масив такой то не работает { 0, 0, 8, 2, 3, 0, 4, 0, 1, 0 };

		reorder(A);
		System.out.println(Arrays.toString(A));
	}
}
  • Вопрос задан
  • 45 просмотров
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019 Куратор тега Java
Bigdata Engineer
Тут - задача на смекалку. Ничего перемещать не надо. Просто фильтуем ненулевые и накапливаем их. Ведем подсчет нулевых (k штук). И формируем новый массив как конкатенацию k нулей и накопленных.

Очень похоже на сортировку подсчетом.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы