ধরুন আমাদের M x N উপাদানের একটি ম্যাট্রিক্স আছে, আমাদের ম্যাট্রিক্সের সব উপাদান ডায়াগোনাল অর্ডারে বের করতে হবে। তাই যদি ম্যাট্রিক্স হয় −
| 1 | 2 | 3 |
| 4 | 5 | 6 |
| 7 | 8 | 9 |
আউটপুট হবে [1,2,4,7,5,3,6,8,9]
এটি সমাধান করতে আমরা নিম্নলিখিত ধাপগুলি অনুসরণ করব −
- একটি ret অ্যারে তৈরি করুন, row := 0 এবং col := 0 সেট করুন, n := সারির সংখ্যা, m := কলামের সংখ্যা, down := false
- i = 0 থেকে n – ১ পর্যন্ত
- x := i, y := 0
- একটি temp অ্যারে তৈরি করুন
- যখন x >= 0 এবং y < m, করুন
- matrix[x,y] temp-এ যোগ করুন, এবং x ১ হ্রাস করুন এবং y ১ বৃদ্ধি করুন
- যদি down true হয়, তবে temp অ্যারে উল্টান
- i = 0 থেকে temp-এর আকার – ১ পর্যন্ত, temp[i] ret-এ যোগ করুন
- down := down-এর বিপরীত
- i = 1 থেকে m – ১ পর্যন্ত
- x := n – 1, y := 1, একটি temp অ্যারে তৈরি করুন
- যখন x >= 0 এবং y < m,
- matrix[x, y] temp-এ যোগ করুন এবং x ১ হ্রাস করুন এবং y ১ বৃদ্ধি করুন
- i = 0 থেকে temp-এর আকার – ১ পর্যন্ত, temp[i] ret-এ যোগ করুন
- down := down-এর বিপরীত
- ret ফেরত দিন।
বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশনটি দেখুন −
উদাহরণ
#include <bits/stdc++.h> using namespace std; void print_vector(vector<int> v){ cout << "["; for(int i = 0; i<v.size(); i++){ cout << v[i] << ", "; } cout << "]"<<endl; } class Solution { public: vector<int> findDiagonalOrder(vector<vector<int>>& matrix) { vector <int> ret; int row = 0; int col = 0; int n = matrix.size(); int m = n? matrix[0].size() : 0; bool down = false; for(int i = 0; i < n; i++){ int x = i; int y = 0; vector <int> temp; while(x >= 0 && y < m){ temp.push_back(matrix[x][y]); x--; y++; } if(down) reverse(temp.begin(), temp.end()); for(int i = 0; i < temp.size(); i++)ret.push_back(temp[i]); down = !down; } for(int i = 1; i < m; i++){ int x = n - 1; int y = i; vector <int> temp; while(x >= 0 && y < m){ temp.push_back(matrix[x][y]); x--; y++; } if(down) reverse(temp.begin(), temp.end()); for(int i = 0; i < temp.size(); i++)ret.push_back(temp[i]); down = !down; } return ret; } }; main(){ vector<vector<int>> v = {{1,2,3},{4,5,6},{7,8,9}}; Solution ob; print_vector(ob.findDiagonalOrder(v)); }ইনপুট
[[1,2,3],[4,5,6],[7,8,9]]
আউটপুট
[1, 2, 4, 7, 5, 3, 6, 8, 9, ]