將數組中的0和1分開  


難度級別 容易獎學金
經常問 ol石 亞馬遜 我的旅行 貝寶 Paytm 百會
排列

問題陳述  

假設您有一個 整數 大批。 問題“將數組中的0和1分離”要求將數組分為兩個部分,即0和1。 0應該在數組的左側,而1應該在數組的右側。

例  

arr[]={1,0,1,1,0,1,1,0}
0 0 0 1 1 1 1 1
說明: 所有0都向左移動,而1都向右移動。

算法  

1. Traverse the array and get the count of total zero’s in the array.
2. Push ‘0’ that

計算數組中的次數

.
3. Push ‘1’ (n – count) no of times in the array from the next position of 0 where we left inserting 0.
4. Print the array.

數組中0和1分開的說明  

鑑於 排列 整數形式,它將僅將0和1存儲在數組中。 重新排列數組,以使所有零都移到數組的左側,並且數組的所有1s元素都將移到數組的右側。 為此,我們將對所有零進行計數。 零計數將幫助我們在數組的左側標記零。

也可以看看
下一個更大的元素

第一次在代碼中遍歷數組以獲取數組中所有零的計數,此計數將幫助我們從數組左側標記所有計數的位數。 因此,我們將遍歷數組並檢查arr [i]的每個值是否等於0,如果發現等於0,則將count的值增加1。我們應該聲明並在進入循環之前將count的值初始化為0。 遍歷後,我們得到了計數。

我們將不遍歷循環計數,並從0標記arr [i]的每個值th 索引到count-1個位置。 現在,我們在數組的左側有零。 現在我們必須從計數到n遍歷數組,其中n是數組的長度。 因此,從i = count開始,無論count的值是多少,都將所有值更新為1。完成所有操作後,我們得到了所需的數組,數組的左側為0,數組的右側為1。 。

將數組中的0和1分開

履行  

用於在數組中隔離0和1的C ++程序

#include<iostream>

using namespace std;

void segregateZeroesOnes(int arr[], int n)
{
    int count = 0;

    for (int i = 0; i < n; i++)
    {
        if (arr[i] == 0)
            count++;
    }
    for (int i = 0; i < count; i++)
        arr[i] = 0;

    for (int i = count; i < n; i++)
        arr[i] = 1;
}

void printArray(int arr[], int n)
{
    for (int i = 0; i < n; i++)
        cout << arr[i] << " ";
}

int main()
{
    int arr[] = {1,0,1,1,0,1,1,0};
    int n = sizeof(arr) / sizeof(arr[0]);

    segregateZeroesOnes(arr, n);
    printArray(arr, n);

    return 0;
}
0 0 0 1 1 1 1 1

用於將數組中的0和1分離的Java程序

class segregateZeroesOnes
{
    public static void segregateZeroesOnes(int arr[], int n)
    {
        int count = 0;

        for (int i = 0; i < n; i++)
        {
            if (arr[i] == 0)
                count++;
        }
        for (int i = 0; i < count; i++)
            arr[i] = 0;

        for (int i = count; i < n; i++)
            arr[i] = 1;
    }
    
    public static void printArray(int arr[], int n)
    {
        for (int i = 0; i < n; i++)
            System.out.print(arr[i] + " ");
    }
    
    public static void main(String[] args)
    {
        int arr[] = new int[] { 1,0,1,1,0,1,1,0 };
        int n = arr.length;

        segregateZeroesOnes(arr, n);
        printArray(arr, n);

    }
}
0 0 0 1 1 1 1 1

數組中分離0和1的複雜度分析  

時間複雜度

O(N) 哪裡 “ n” 是數組中元素的數量。

也可以看看
構造矩形Leetcode解決方案

空間複雜度

O(N) 哪裡 “ n” 是數組中元素的數量。

參考文獻