Для данного массива из n целых чисел, содержащего только 0 и 1. Найдите минимальные переключатели (переключение с 0 на 1 или наоборот), необходимые для массива, в котором массив становится секционированным, т. Е. Он имеет сначала 0, а затем 1. В начале должен быть хотя бы один 0, а в конце может быть ноль или более 1.
Input: arr[] = {1, 0, 1, 1, 0} Output: 2 Toggle the first and last element i.e., 1 -> 0 0 -> 1 Final array will become: arr[] = {0 0 1 1 1} Since first two consecutive elements are all 0s and rest three consecutive elements are all 1s. Therefore minimum two toggles are required. Input: arr[] = {0, 1, 0, 0, 1, 1, 1} Output: 1 Input: arr[] = {1, 1} Output: 1 There should be at least one 0. Input: arr[] = {0, 0} Output: 0 There can zero 1s.
Если мы посмотрим на вопрос, то обнаружим, что определенно будет существовать точка от 0 до n-1, где все элементы, оставленные до этой точки, должны содержать все 0, а справа от точки должны содержать все 1. Те индексы, которые не подчиняются этому закону, должны быть удалены. Идея состоит в том, чтобы считать все 0 слева направо.
Let zero[i] denotes the number of 0's till ith index, then for each i, minimum number of toggles required can be written as: i - zero[i] + zero[n] - zero[i] . The part i - zero[i] indicates number of 1's to be toggled and the part zero[n] - zero[i] indicates number of 0's to be toggled. After that we just need to take minimum of all to get the final answer.
|
Джава
|
python3
|
C #
|
PHP
|
Выход:
Рекомендуемые посты:
- Минимальная стоимость разбиения заданной двоичной строки
- Минимальная длина подмассива 1 с в двоичном массиве
- Минимальное количество единиц для замены в двоичном массиве
- Минимум переворотов в двух двоичных массивах, чтобы их XOR был равен другому массиву
- Минимальные битовые изменения в двоичном круговом массиве для достижения индекса
- Минимальный подмассив такой, что число единиц в конкатенации двоичного представления его элементов составляет не менее K
- Минимальное количество ходов, чтобы сделать двоичный массив K периодическим
- Минимальные смежные свопы, необходимые для сортировки двоичного массива
- Найти точку разбиения в массиве
- Разделите массив на три равных сегмента суммы
- Оптимальное разбиение массива на четыре части
- Максимальная средняя сумма разбиения массива
- Разделение массива равной суммы, исключая данный элемент
- Найти точку разбиения в массиве, чтобы максимизировать ее сумму xor
- Разделите массив таким образом на максимально увеличивающиеся сегменты
0.00 (0%) 0 votes