বিভিন্ন প্ল্যাটফর্মে 'reshape' নামে একটি ব্যবহারী ফাংশন থাকে যা একটি মেট্রিক্সকে নতুন আকারে রূপান্তর করে কিন্তু ডেটা একই থাকে। একটি মেট্রিক্স এবং পাঙkti (r) ও কলাম (c) সংখ্যা দেওয়া থাকলে, নতুন মেট্রিক্স তৈরি করতে হবে। যদি নতুন আকার সম্ভব না হয়, তবে মূল মেট্রিক্স ফেরত দিন।
উদাহরণ: ইনপুট [[5,10],[15,20]], row = 1, col = 4 হলে আউটপুট [[5, 10, 15, 20]]।
সমাধানের ধাপসমূহ
- একটি টেম্পোরারি অ্যারে temp সংজ্ঞায়িত করুন।
- আকার r × c的一個 2D অ্যারে res তৈরি করুন।
- count := 0।
- মূল মেট্রিক্স nums-এর সব উপাদান temp-এ পুশ করুন।
- যদি r * c != nums.size() * nums[0].size() হয়, তবে nums রিটার্ন করুন।
- অন্যথায়, temp থেকে উপাদান নিয়ে res-এ भरুন।
- res রিটার্ন করুন।
C++ কোড উদাহরণ
#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<vector<auto>> v) {
cout << "[";
for (int i = 0; i < v.size(); i++) {
cout << "[";
for (int j = 0; j < v[i].size(); j++) {
cout << v[i][j] << ", ";
}
cout << "],";
}
cout << "]" << endl;
}
class Solution {
public:
vector<vector<int>> matrixReshape(vector<vector<int>>& nums, int r, int c) {
vector<int> temp;
vector<vector<int>> res(r, vector<int>(c));
int count = 0;
for (int i = 0; i < nums.size(); i++) {
for (int j = 0; j < nums[0].size(); j++) {
temp.push_back(nums[i][j]);
}
}
if (r * c != nums.size() * nums[0].size())
return nums;
for (int i = 0; i < r; i++) {
for (int j = 0; j < c; j++) {
res[i][j] = temp[count++];
}
}
return res;
}
};
int main() {
Solution ob;
vector<vector<int>> v = {{5,10},{15,20}};
print_vector(ob.matrixReshape(v, 1, 4));
return 0;
}
ইনপুট
{{5,10},{15,20}}, 1, 4
আউটপুট
[[5, 10, 15, 20, ],]