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

C প্রোগ্রামে অ্যারে লেফ্ট রোটেশন O(n) টাইম ও O(1) স্পেসে


ভূমিকা

একটি অ্যারে এবং একটি ইন্ডেক্স k দেওয়া থাকলে, অ্যারেটিকে k পজিশন বাম দিকে রোটেট (left rotate) করতে হবে। এক্সট্রা স্পেস ব্যবহার না করে এবং O(n) টাইম কমপ্লেক্সিটিতে।

উদাহরণ

ইনপুট: arr[] = {1,2,3,4,5}, K1=1, K2=3, K3=6
আউটপুট:
K1: 2 3 4 5 1
K2: 4 5 1 2 3
K3: 2 3 4 5 1  (6 % 5 = 1)

এলগরিদম

void leftRotate(int arr[], int n, int k)
শুরু
  cal = k % n
  i = 0 থেকে n-1 পর্যন্ত:
    arr[(cal + i) % n] প্রিন্ট করুন
শেষ

C++ প্রোগ্রাম উদাহরণ

#include 
using namespace std;

void leftRotate(int arr[], int n, int k) {
    int cal = k % n;
    for (int i = 0; i < n; i++)
        cout << arr[(cal + i) % n] << " ";
    cout << "\n";
}

int main() {
    int a[] = {1, 2, 3, 4};
    int size = sizeof(a) / sizeof(a[0]);
    leftRotate(a, size, 1);
    leftRotate(a, size, 2);
    leftRotate(a, size, 3);
    return 0;
}

আউটপুট

2 3 4 1
3 4 1 2
4 1 2 3
  1. C প্রোগ্রামে অ্যারে লেফ্ট রোটেশন O(n) টাইম ও O(1) স্পেসে

  2. C প্রোগ্রামে অ্যারেতে উপাদানগুলোর শেষ অকরেন্স রিলেটিভ অর্ডারে প্রিন্ট করা

  3. C প্রোগ্রামে এক্সট্রা স্পেস ছাড়া লিংকড লিস্ট উল্টে প্রিন্ট করা

  4. C++ প্রোগ্রামে অ্যারে লেফ্ট রোটেশন (Array Rotation)