n কলাম আর ২ রোয়ালা একটি ম্যাট্রিক্সের বিবরণ দেওয়া আছে:
- ম্যাট্রিক্সের উপাদান হবে ০ বা ১।
- ০-ম (উপরের) রোর উপাদানগুলোর যোগফল
upper। - ১-ম (নিচের) রোর উপাদানগুলোর যোগফল
lower। - i-তম কলামের (০-ইন্ডেক্সড) উপাদানগুলোর যোগফল
colsum[i], যেখানেcolsumদিয়ে আকার n-র একটি পূর্ণসংখ্যা অ্যারে।
এই ম্যাট্রিক্সটি upper, lower আর colsum দিয়ে পুনর্নির্মাণ করতে হবে। একটি বৈধ সমাধান থাকলে যেকোনো একটি গ্রহণযোগ্য। সমাধান না থাকলে খালি ২D অ্যারে ফেরত দিন। উদাহরণস্বরূপ, upper = 2, lower = 3, colsum = [1,1,1] হলে আউটপুট [[1,1,0],[0,0,1]]।
সমাধানের ধাপগুলো:
flag := true, n := c.size(), আকার2 x n-এর একটি অ্যারেansবানান।i = 0থেকেn-1পর্যন্ত:- যদি
c[i] = 2হয়:uআরl১ করে কমান।- যদি
u < 0বাl < 0হয়,flag := false। ans[0][i] = 1আরans[1][i] = 1।
- অন্যथा যদি
c[i] = 1হয়:- যদি
u > lহয়,u১ কমিয়েans[0][i] := 1। - অন্যथा যদি
u < lহয়,l১ কমিয়েans[1][i] := 1। - অন্যथा (যদি
u == l):- যদি
u > 0হয়,u১ কমিয়েans[0][i] := 1। - অন্যथा যদি
l > 0হয়,l১ কমিয়েans[1][i] := 1। - অন্যथा
flag := false।
- যদি
- যদি
- অন্যथा যদি
c[i] = 0হয়:- যদি
c[i] > 0হয়,flag := false।
- যদি
- অন্যथा
flag := false।
- যদি
- যদি
flagfalse হয় অথবাu != 0অথবাl != 0, তবে খালি অ্যারে ফেরত দিন। ansফেরত দিন।
নিচের ইমপ্লিমেন্টেশনটি দেখুন:
উদাহরণ
#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>> reconstructMatrix(int u, int l, vector<int>& c) { bool flag = true; int n = c.size(); vector < vector <int> > ans(2, vector <int> (n)); for(int i = 0; i < n; i++){ if(c[i] == 2){ u--; l--; if(u<0 || l<0)flag = false; ans[0][i] = 1; ans[1][i] = 1; }else if(c[i] == 1){ if(u>l){ u--; ans[0][i] = 1; }else if(u<l){ l--; ans[1][i] = 1; }else{ if(u>0){ u--; ans[0][i] = 1; }else if(l > 0){ l--; ans[1][i] = 1; }else flag = false; } }else if(c[i] == 0){ if(c[i]>0)flag = false; }else{ flag = false; } } if(!flag || u!=0 ||l!=0 )return {}; return ans; } }; main(){ vector<int> v = {1,1,1}; Solution ob; print_vector(ob.reconstructMatrix(2,1,v)); }ইনপুট
2 1 [1,1,1]
আউটপুট
[[1, 1, 0, ],[0, 0, 1, ],]