ধরুন আমাদের একটি 2D ম্যাট্রিক্স রয়েছে যেখানে প্রতিটি সারিতে দুটি মান রয়েছে [উচ্চতা, গণনা] এটি নির্দেশ করে যে ব্যক্তি উচ্চতা দিয়েছেন এবং তাদের সামনে 'গণনা' সংখ্যা রয়েছে যারা অন্তত তাদের মতো লম্বা। এখন বিবেচনা করুন এই সারিটি এলোমেলো করা হয়েছে, আমাদের সারির মূল ক্রম পুনরুদ্ধার করতে হবে৷
সুতরাং, যদি ইনপুট মত হয়
2 | 2 |
4 | 0 |
5 | 0 |
তাহলে আউটপুট হবে
4 | 0 |
5 | 0 |
2 | 2 |
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:
- N :=ম্যাট্রিক্সের সারি গণনা
- উচ্চতা বৃদ্ধি এবং সংখ্যা হ্রাসের উপর ভিত্তি করে ম্যাট্রিক্স সারিগুলি পুনরায় সাজান
- উত্তর :=N আকারের একটি তালিকা তৈরি করুন এবং প্রাথমিকভাবে সমস্ত এন্ট্রি শূন্য হয়
- প্রতিটি উচ্চতার জন্য h, এবং ম্যাট্রিক্স সারিতে c গণনা করুন, করুন
- তাপ :=0
- প্রতিটি সূচক i, এবং মান সংখ্যা উত্তরের জন্য, করুন
- যদি temp>
=c এবং num null হয়, তাহলে
- উত্তর[i] :=[h, c]
- লুপ থেকে বেরিয়ে আসুন
- যদি num হয় null বা num[0]>=h, তাহলে
- temp :=temp + 1
- যদি temp>
=c এবং num null হয়, তাহলে
- উত্তর ফেরত দিন
আরও ভালভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি:
উদাহরণ
class Solution: def solve(self, matrix): N = len(matrix) matrix.sort(key=lambda x: [x[0], -x[1]]) ans = [None] * N for h, c in matrix: temp = 0 for i, num in enumerate(ans): if temp >= c and num is None: ans[i] = [h, c] break if num is None or num[0] >= h: temp += 1 return ans ob = Solution() matrix = [ [2, 2], [4, 0], [5, 0] ] print(ob.solve(matrix))
ইনপুট
[[2, 2],[4, 0],[5, 0]]
আউটপুট
[[4, 0], [5, 0], [2, 2]]