मान लीजिए कि हमारे पास एक 2D मैट्रिक्स है जहां प्रत्येक पंक्ति में दो मान [ऊंचाई, गिनती] हैं, ये इंगित करता है कि व्यक्ति ने ऊंचाई दी है और उनके सामने लोगों की संख्या 'गिनती' है जो कम से कम उनके जितना लंबा है। अब मान लें कि इस कतार में फेरबदल किया गया है, हमें कतार के मूल क्रम को पुनर्प्राप्त करना होगा।
तो, अगर इनपुट पसंद है
2 | 2 |
4 | 0 |
5 | 0 |
तो आउटपुट होगा
4 | 0 |
5 | 0 |
2 | 2 |
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- N :=मैट्रिक्स की पंक्ति गणना
- बढ़ती ऊंचाई और घटती गिनती के आधार पर मैट्रिक्स पंक्तियों को पुनर्व्यवस्थित करें
- उत्तर :=आकार N की एक सूची बनाएं और प्रारंभ में सभी प्रविष्टियां शून्य हैं
- प्रत्येक ऊंचाई h के लिए, और मैट्रिक्स पंक्ति में c की गणना करें
- अस्थायी:=0
- प्रत्येक अनुक्रमणिका i के लिए, और मान संख्या उत्तर, करें
- यदि अस्थायी>=c और संख्या शून्य है, तो
- Ans[i] :=[h, c]
- लूप से बाहर आएं
- यदि संख्या शून्य या संख्या है[0]>=h, तो
- अस्थायी:=अस्थायी + 1
- यदि अस्थायी>=c और संख्या शून्य है, तो
- वापसी उत्तर
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण
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]]