কম্পিউটার টিউটোরিয়াল

অ্যারেতে শূন্য শুরুতে এবং এক (1) শেষে নিয়ে যাওয়া - সি++

একটি অ্যারেতে শূন্য, এক এবং অন্যান্য সংখ্যা থাকলে, সকল শূন্যকে শুরুতে এবং এককে শেষে নিয়ে যেতে হবে।

উদাহরণ

ইনপুট: [4, 5, 1, 1, 0, 0, 2, 0, 3, 1, 0, 1]

আউটপুট: 0 0 0 0 4 5 2 3 1 1 1 1

অ্যালগরিদম

  • প্রথমে শূন্য ছাড়া সব উপাদান সামনে নিয়ে আসুন (index ট্র্যাক করুন)।
  • বাকি জায়গাগুলো ১ দিয়ে পূরণ করুন।
  • পরে পিছন থেকে স্ক্যান করে ১ ছাড়া সব উপাদান পেছনে ঠেলে দিন।
  • শুরুতে শূন্য পূরণ করুন।

সি++ ইমপ্লিমেন্টেশন

#include <bits/stdc++.h>
using namespace std;

void update1And0Positions(int arr[], int n) {
    int index = 0;
    // ১ ছাড়া সব উপাদান সামনে
    for (int i = 0; i < n; i++) {
        if (arr[i] != 1) arr[index++] = arr[i];
    }
    while (index < n) arr[index++] = 1;
    // ০গুলো শুরুতে
    index = 0;
    for (int i = n - 1; i >= 0; i--) {
        if (arr[i] == 1) continue;
        if (!index) index = i;
        if (arr[i] != 0) arr[index--] = arr[i];
    }
    while (index >= 0) arr[index--] = 0;
}

int main() {
    int arr[] = {4, 5, 1, 1, 0, 0, 2, 0, 3, 1, 0, 1};
    int n = 12;
    update1And0Positions(arr, n);
    for (int i = 0; i < n; i++) cout << arr[i] << " ";
    cout << endl;
    return 0;
}

আউটপুট

0 0 0 0 4 5 2 3 1 1 1 1
  1. C++-এ সব স্ট্রিং সমান করার মিনিমাম মুভ-টু-এন্ড অপারেশন

  2. C++ ব্যবহার করে অ্যারেতে ab = cd সেটি করার সব জোড়া (a,b) ও (c,d) বের করা

  3. C++-এ অ্যারে স্প্লিট করে প্রথম অংশকে শেষে যোগ করা (Split Array and Add First Part to End)

  4. C#-তে দেয়া ইন্টিজার অ্যারে থেকে সব শূন্য অ্যারের শেষে সরান