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

C++-এ লিস্টকে K পজিশন বামে রোটেট করার প্রোগ্রাম


সমস্যা বিবরণ

একটি সংখ্যা লিস্ট এবং K দেওয়া থাকলে, লিস্টকে বাম দিকে K পজিশন রোটেট করুন।

উদাহরণ: [5,4,7,8,5,6,8,7,9,2], k=2 → [7,8,5,6,8,7,9,2,5,4]

সমাধানের পদ্ধতি

  1. k = k % n (কারণ n রোটেশনে পূর্ণ চক্র)۔
  2. নতুন ভেক্টর ret বানান।
  3. প্রথম k এলিমেন্ট বাদ দিয়ে বাকিগুলো ret-এ কপি করুন।
  4. তারপর প্রথম k এলিমেন্ট ret-এ কপি করুন।

C++ কোড উদাহরণ

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

void print_vector(vector v) {
    cout << "[";
    for (int i = 0; i < v.size(); i++) {
        cout << v[i] << ", ";
    }
    cout << "]" << endl;
}

class Solution {
public:
    vector solve(vector& nums, int k) {
        vector ret;
        int n = nums.size();
        k %= n;
        for (int i = k; i < n; i++)
            ret.push_back(nums[i]);
        for (int i = 0; i < k; i++)
            ret.push_back(nums[i]);
        return ret;
    }
};

int main() {
    Solution ob;
    vector v = {5, 4, 7, 8, 5, 6, 8, 7, 9, 2};
    print_vector(ob.solve(v, 3));
    return 0;
}

আউটপুট

[8, 5, 6, 8, 7, 9, 2, 5, 4, 7, ]

জটিলতা

  • সময়: O(n)
  • স্থান: O(n)

ইন-প্লেস O(1) স্পেস: রিভার্স অ্যালগরিদম: reverse(0,n-1), reverse(0,n-k-1), reverse(n-k,n-1)।

  1. লিংকড লিস্ট ফ্ল্যাটেন করা (C++)

  2. সি++ প্রোগ্রাম: পারমুটেশন লিস্ট থেকে অনুপস্থিত পারমুটেশন খুঁজে বের করা

  3. C++-এ ডাবলি লিংকড লিস্ট ব্যবহার করে ক্যারেক্টার প্যালিনড্রোম কিনা তা যাচাই করা

  4. C++-এ স্ট্র্যান্ড সর্ট (Strand Sort)