মনে করুন n x m ম্যাট্রিক্স Mat আছে, আমাদের এটি ডায়াগোনালি আরোহী ক্রমে সর্ট করতে হবে উপরের বাম থেকে নিচের ডান দিকে।
ইনপুট এবং আউটপুট ম্যাট্রিক্সের টেবিল দেওয়া আছে।
সমাধানের ধাপসমূহ
- solve() মেথড সংজ্ঞায়িত করুন যা si, sj এবং mat নেয়
- n := সারি সংখ্যা, m := কলাম সংখ্যা
- temp নামক অ্যারে তৈরি করুন
- i:= si, j := sj, index := 0
- যখন i < n এবং j < m,
- m[i][j] temp-এ যোগ করুন, i এবং j ১ করে বাড়ান
- temp অ্যারে সর্ট করুন
- index := 0, i := si, j := sj
- যখন i < n এবং j < m
- mat[i][j] := temp[index]
- i, j, index ১ করে বাড়ান
- মূল মেথড থেকে:
- n := সারি, m := কলাম
- i = 0 থেকে n-1 পর্যন্ত, solve(i, 0, mat)
- j = 1 থেকে m-1 পর্যন্ত, solve(0, j, mat)
- mat ফেরত দিন
উদাহরণ
#includeusing namespace std; void print_vector(vector > v){ cout << "["; for(int i = 0; i > &mat){ int n = mat.size(); int m = mat[0].size(); vector temp; int i = si; int j = sj; int idx = 0; while(i < n && j < m){ temp.push_back(mat[i][j]); i++; j++; } sort(temp.begin(), temp.end()); idx = 0; i = si; j = sj; while(i < n && j < m){ mat[i][j] = temp[idx]; i++; j++; idx++; } } vector > diagonalSort(vector >& mat) { int n = mat.size(); int m = mat[0].size(); for(int i = 0; i > v = {{3,3,1,1},{2,2,1,2},{1,1,1,2}}; Solution ob; print_vector(ob.diagonalSort(v)); }
ইনপুট
{{3,3,1,1},{2,2,1,2},{1,1,1,2}}আউটপুট
[[1, 1, 1, 1, ], [1, 2, 2, 2, ], [1, 2, 3, 3, ],]