বিভিন্ন প্ল্যাটফর্মে 'রিশেপ' নামক খুব দরকারী ফাংশন রয়েছে, সেই ফাংশনটি একটি ম্যাট্রিক্সকে ভিন্ন আকারের সাথে নতুন আকারে রূপান্তর করতে ব্যবহৃত হয় তবে ডেটা একই হবে। সুতরাং, যদি আমাদের কাছে একটি ম্যাট্রিক্স থাকে এবং দুটি মান r এবং c থাকে যথাক্রমে ওয়ান্টেড রিশেপড ম্যাট্রিক্সের সারি নম্বর এবং কলাম নম্বরের জন্য।
সুতরাং, যদি ইনপুটটি [[5,10],[15,20]], সারি =1 এবং col =4 এর মত হয়, তাহলে আউটপুট হবে [[5, 10, 15, 20]]]
এটি সমাধান করার জন্য, আমরা এই পদক্ষেপগুলি অনুসরণ করব—
-
একটি অ্যারের তাপমাত্রা সংজ্ঞায়িত করুন
-
আকারের একটি 2D অ্যারে রেস (r x c)
সংজ্ঞায়িত করুন -
গণনা :=0
-
আরম্ভ করার জন্য i :=0, যখন i <সংখ্যার আকার, আপডেট (i 1 দ্বারা বৃদ্ধি), −
-
j শুরু করার জন্য :=0, যখন j <সংখ্যার আকার[0], আপডেট করুন (j 1 দ্বারা বৃদ্ধি করুন), করুন −
-
temp-এর শেষে nums[i, j] সন্নিবেশ করান
-
-
-
যদি r * c সংখ্যার আকারের সমান না হয়, তাহলে −
-
ফিরতি সংখ্যা
-
-
আরম্ভ করার জন্য i :=0, যখন i
-
j শুরু করার জন্য :=0, যখন j
করুন -
গণনা =গণনা + 1
-
res[i, j] :=temp[গণনা]
-
-
-
রিটার্ন রিটার্ন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
#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; } }; main(){ Solution ob; vector<vector<int>> v = {{5,10},{15,20}}; print_vector(ob.matrixReshape(v, 1, 4)); }
ইনপুট
{{5,10},{15,20}}, 1, 4
আউটপুট
[[5, 10, 15, 20, ],]