একটি অ্যারেতে 0 এবং 1 গুলি আলাদা করুন


কাঠিন্য মাত্রা সহজ
প্রায়শই জিজ্ঞাসা করা হয় সমষ্টি মর্দানী স্ত্রীলোক প্রভূত MakeMyTrip পেপ্যাল Paytm Zoho
বিন্যাস

সমস্যা বিবৃতি

মনে করুন আপনার একটি আছে পূর্ণসংখ্যা অ্যারে। "অ্যারেতে 0 এবং 1s বিভাজক" সমস্যাটি অ্যারে দুটি অংশে 0 এবং 1s তে আলাদা করতে বলে। 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 উপাদান অ্যারের ডানদিকে স্থানান্তরিত হবে। এই জন্য, আমরা সমস্ত শূন্য একটি গণনা করতে যাচ্ছি। এই শূন্য সংখ্যাগুলি অ্যারের বাম দিকে শূন্যগুলি চিহ্নিত করতে আমাদের সহায়তা করবে।

অ্যারেতে সমস্ত শূন্যের গণনা পেতে কোডটিতে প্রথমবারের মতো অ্যারেটিকে অতিক্রম করুন, এই গণনাটি অ্যারের বাম দিক থেকে সমস্ত গণনার সংখ্যা চিহ্নিত করতে আমাদের সহায়তা করবে। সুতরাং এর জন্য আমরা অ্যারেটি অতিক্রম করব এবং অ্যারের প্রতিটি মান পরীক্ষা করব [i], এটি 0 এর সমান, যদি এটি 0 এর সমান হয়, তবে গণনাটির মান 1 দিয়ে বাড়িয়ে দেওয়া উচিত আমাদের ঘোষণা করা উচিত ছিল এবং লুপে প্রবেশের আগে গণনাটির মান 0 থেকে শুরু করে। ট্রাউজারিংয়ের পরে আমরা গণনা পেয়েছি।

আমরা লুপ গণনাটি কোনও সময় অতিক্রম করব না এবং 0 থেকে আরার [i] এর প্রতিটি মান চিহ্নিত করবth গণনা -১ নম্বর স্থানে সূচক। এখন, আমাদের অ্যারের বাম দিকে শূন্য আছে। এখন আমাদের অ্যারেটি গণনা থেকে n এ যেতে হবে যেখানে এন অ্যারের দৈর্ঘ্য। সুতরাং i = গণনা থেকে শুরু করে গণনার মান যাই হোক না কেন, সমস্ত মান 1 তে আপডেট করে রাখুন all সমস্ত ক্রিয়াকলাপের পরে, আমাদের পছন্দসই অ্যারে রয়েছে, অ্যারের বাম দিকে 1s এবং অ্যারের ডানদিকে 0s হবে ।

একটি অ্যারেতে 0 এবং 1 গুলি আলাদা করুন

বাস্তবায়ন

অ্যারেতে সেগ্রেগেট 0 ও 1 এস এর জন্য সি ++ প্রোগ্রাম

#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 এস এর জন্য জাভা প্রোগ্রাম

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

অ্যারেতে বিভাজন 0s এবং 1 এর জন্য জটিলতা বিশ্লেষণ

সময় জটিলতা

উপর) কোথায় "এন" অ্যারেতে উপাদানগুলির সংখ্যা।

স্পেস জটিলতা ity

উপর) কোথায় "এন" অ্যারেতে উপাদানগুলির সংখ্যা।

উল্লেখ