Рубрики

Переместить все нули в конец массива

Задав массив случайных чисел, поместите все нули данного массива в конец массива. Например, если заданные массивы равны {1, 9, 8, 4, 0, 0, 2, 7, 0, 6, 0}, его следует изменить на {1, 9, 8, 4, 2, 7, 6, 0, 0, 0, 0}. Порядок всех остальных элементов должен быть одинаковым. Ожидаемая сложность времени составляет O (n), а дополнительное пространство — O (1).

Пример:

Input :  arr[] = {1, 2, 0, 4, 3, 0, 5, 0};
Output : arr[] = {1, 2, 4, 3, 5, 0, 0};

Input : arr[]  = {1, 2, 0, 0, 0, 3, 6};
Output : arr[] = {1, 2, 3, 6, 0, 0, 0};

Там может быть много способов решить эту проблему. Ниже приводится простой и интересный способ решения этой проблемы.
Пройдите по указанному массиву 'arr' слева направо. Во время обхода поддерживайте количество ненулевых элементов в массиве. Пусть количество будет «считать». Для каждого ненулевого элемента arr [i] поместите элемент в arr [count] и увеличьте значение count. После полного обхода все ненулевые элементы уже были перенесены во внешний интерфейс, и 'count' установлен в качестве индекса первого 0. Теперь все, что нам нужно сделать, — это запустить цикл, который обнуляет все элементы от 'count' до end массива.

Ниже приведена реализация вышеуказанного подхода.

C ++

// Программа на C ++ для перемещения всех нулей в конец массива
#include <iostream>

using namespace std;

  
// Функция, которая помещает все нули в конец массива.

void pushZerosToEnd(int arr[], int n)

{

    int count = 0;  // Количество ненулевых элементов

  

    // Обходим массив. Если встреченный элемент не

    // ноль, затем заменить элемент по индексу 'count'

    // с этим элементом

    for (int i = 0; i < n; i++)

        if (arr[i] != 0)

            arr[count++] = arr[i]; // здесь количество

                                   // увеличивается

  

    // Теперь все ненулевые элементы были смещены в

    // front и 'count' устанавливается как индекс первого 0.

    // Делаем все элементы 0 от конца до конца.

    while (count < n)

        arr[count++] = 0;

}

  
// Программа драйвера для проверки вышеуказанной функции

int main()

{

    int arr[] = {1, 9, 8, 4, 0, 0, 2, 7, 0, 6, 0, 9};

    int n = sizeof(arr) / sizeof(arr[0]);

    pushZerosToEnd(arr, n);

    cout << "Array after pushing all zeros to end of array :\n";

    for (int i = 0; i < n; i++)

        cout << arr[i] << " ";

    return 0;

}

Джава

/ * Java-программа для вставки нулей в конец массива * /

import java.io.*;

  

class PushZero

{

    // Функция, которая помещает все нули в конец массива.

    static void pushZerosToEnd(int arr[], int n)

    {

        int count = 0// Количество ненулевых элементов

  

        // Обходим массив. Если встреченный элемент

        // не ноль, затем заменить элемент с индексом 'count'

        // с этим элементом

        for (int i = 0; i < n; i++)

            if (arr[i] != 0)

                arr[count++] = arr[i]; // здесь количество

                                       // увеличивается

  

        // Теперь все ненулевые элементы были смещены в

        // front и 'count' устанавливается как индекс первого 0.

        // Делаем все элементы 0 от конца до конца.

        while (count < n)

            arr[count++] = 0;

    }

  

    / * Функция драйвера для проверки вышеуказанных функций * /

    public static void main (String[] args)

    {

        int arr[] = {1, 9, 8, 4, 0, 0, 2, 7, 0, 6, 0, 9};

        int n = arr.length;

        pushZerosToEnd(arr, n);

        System.out.println("Array after pushing zeros to the back: ");

        for (int i=0; i<n; i++)

            System.out.print(arr[i]+" ");

    }

}
/ * Этот код предоставлен Девешом Агравалом * /

python3

# Python3 код для перемещения всех нулей
# в конце массива

  
# Функция, которая толкает все
# нули до конца массива.

def pushZerosToEnd(arr, n):

    count = 0 # Количество ненулевых элементов

      

    # Обойти массив. Если элемент

    # встретил ненулевой, то

    # заменить элемент в индексе

    # 'count' с этим элементом

    for i in range(n):

        if arr[i] != 0:

              

            # здесь счетчик увеличивается

            arr[count] = arr[i]

            count+=1

      

    # Теперь все ненулевые элементы были

    # сдвинуто вперед и установлено значение 'count'

    # как индекс первого 0. Сделать все

    # элементов 0 от счетчика до конца.

    while count < n:

        arr[count] = 0

        count += 1

          
# Код драйвера

arr = [1, 9, 8, 4, 0, 0, 2, 7, 0, 6, 0, 9]

n = len(arr)

pushZerosToEnd(arr, n)

print("Array after pushing all zeros to end of array:")

print(arr)

  
# Этот код предоставлен "Abhishek Sharma 44"

C #

/ * C # программа для переноса нулей в конец массива * /

using System;

  

class PushZero

{

    // Функция, которая выталкивает все нули

    // до конца массива.

    static void pushZerosToEnd(int []arr, int n)

    {

        // Количество ненулевых элементов

        int count = 0; 

          

        // Обходим массив. Если встреченный элемент

        // не ноль, затем заменить элемент

        // с индексом ..countâ .. с этим элементом

        for (int i = 0; i < n; i++)

        if (arr[i] != 0)

          

        // здесь счетчик увеличивается

        arr[count++] = arr[i]; 

          

        // Теперь все ненулевые элементы были смещены в

        // front и â..countâ .. устанавливается как индекс первого 0.

        // Делаем все элементы 0 от конца до конца.

        while (count < n)

        arr[count++] = 0;

    }

      

    // Функция драйвера

    public static void Main ()

    {

        int []arr = {1, 9, 8, 4, 0, 0, 2, 7, 0, 6, 0, 9};

        int n = arr.Length;

        pushZerosToEnd(arr, n);

        Console.WriteLine("Array after pushing all zeros to the back: ");

        for (int i = 0; i < n; i++)

        Console.Write(arr[i] +" ");

    }

}
/ * Этот код предоставлен Anant Agrawal * /

PHP

<?php 
// PHP-программа для перемещения всех
// нули в конце массива

  
// Функция, которая толкает все
// нули до конца массива.

function pushZerosToEnd(&$arr, $n)

{

    // Количество ненулевых элементов

    $count = 0; 

  

    // Обходим массив. Если

    // обнаруженный элемент

    // ненулевой, затем заменить

    // элемент по индексу

    // считать с этим элементом

    for ($i = 0; $i < $n; $i++)

        if ($arr[$i] != 0)

            // здесь счетчик увеличивается

            $arr[$count++] = $arr[$i]; 

  

    // Теперь все ненулевые элементы

    // были сдвинуты вперед

    // и 'count' установлен как индекс

    // первого 0. Сделать все элементы

    // 0 от конца до конца.

    while ($count < $n)

        $arr[$count++] = 0;

}

  
// Код драйвера

$arr = array(1, 9, 8, 4, 0, 0,

             2, 7, 0, 6, 0, 9);

$n = sizeof($arr);

pushZerosToEnd($arr, $n);

echo "Array after pushing all " .

     "zeros to end of array :\n";

  

for ($i = 0; $i < $n; $i++)

echo $arr[$i] . " ";

  
// Этот код добавлен
// ChitraNayal
?>


Выход:

Array after pushing all zeros to end of array :
1 9 8 4 2 7 6 9 0 0 0 0

Сложность времени: O (n), где n — количество элементов во входном массиве.

Вспомогательное пространство: O (1)

Эта статья предоставлена Чандрой Пракаш . Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Переместить все нули в конец массива

0.00 (0%) 0 votes