배열에서 0과 1 분리  


난이도 쉽게
자주 묻는 질문 수행자 아마존 MakeMyTrip 페이팔 Paytm 조호 (Zoho)
배열

문제 정책  

당신이 정수 정렬. "배열에서 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 만 배열에 저장합니다. 모든 1이 배열의 왼쪽으로 이동하고 배열의 모든 XNUMXs 요소가 배열의 오른쪽으로 이동하는 방식으로 배열을 다시 정렬합니다. 이를 위해 우리는 모든 XNUMX의 개수를 만들 것입니다. 이 XNUMX 카운트는 어레이의 왼쪽에 XNUMX을 표시하는 데 도움이 될 것입니다.

참조
다음으로 큰 요소

코드에서 처음으로 배열을 탐색하여 배열에있는 모든 0의 개수를 가져옵니다.이 개수는 배열의 왼쪽에서 모든 개수의 자리를 표시하는 데 도움이됩니다. 그래서 우리는 배열을 탐색하고 arr [i]의 각 값을 검사 할 것입니다. 0과 같고 1과 같으면 count의 값을 0 씩 증가시킵니다. 루프에 들어가기 전에 카운트 값을 XNUMX으로 초기화했습니다. 횡단 후 우리는 카운트를 얻었습니다.

우리는 루프 카운트를 번거롭지 않고 0에서 arr [i]의 모든 값을 표시합니다.th count-1 자리 수에 대한 색인. 이제 배열의 왼쪽에 1이 있습니다. 이제 우리는 개수에서 n까지 배열을 횡단해야합니다. 여기서 n은 배열의 길이입니다. 따라서 count의 값이 무엇이든 i = count에서 시작하여 모든 값을 0로 계속 업데이트합니다. 모든 작업이 끝나면 원하는 배열이 생성됩니다. 배열의 왼쪽에는 1, 배열의 오른쪽에는 XNUMX이 있습니다. .

배열에서 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) 어디에 "엔" 배열의 요소 수입니다.

참조
Rectangle Leetcode 솔루션 생성

공간 복잡성

O (N) 어디에 "엔" 배열의 요소 수입니다.

참고