मान लीजिए हमारे पास एक 2डी मैट्रिक्स है, जहां मैट्रिक्स [आर, सी] एक शहर में एक कॉन्डोमिनियम की ऊंचाई का प्रतिनिधित्व करता है। मैट्रिक्स में प्रत्येक पंक्ति का अधिकतम भाग लेकर पश्चिम-पूर्व क्षितिज दिखाई देता है। और प्रत्येक स्तम्भ का अधिकतम भाग लेकर उत्तर-दक्षिण क्षितिज देखा जा सकता है। हमें एक नया मैट्रिक्स ढूंढना होगा, जहां प्रत्येक कॉन्डोमिनियम की ऊंचाई को अधिकतम संभव ऊंचाई तक बढ़ाया जाए, जबकि पश्चिम-पूर्व और उत्तर-दक्षिण क्षितिज को समान रखा जाए।
तो, अगर इनपुट पसंद है
2 | 3 | 4 |
5 | 6 | 7 |
8 | 9 | 10 |
4 | 4 | 4 |
7 | 7 | 7 |
8 | 9 | 10 |
जैसा कि पश्चिम-पूर्व क्षितिज [4, 7, 10] है और उत्तर-दक्षिण क्षितिज [8, 9, 10] है। हम पहली पंक्ति की हर चीज़ को मान 4 तक और दूसरी पंक्ति की हर चीज़ को बिना स्काईलाइन को बदले मान 7 तक बढ़ा सकते हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
-
r :=मैट्रिक्स में प्रत्येक पंक्ति की अधिकतम सूची
-
c :=मैट्रिक्स में प्रत्येक कॉलम की अधिकतम सूची
-
मैं के लिए 0 से लेकर मैट्रिक्स की पंक्ति गणना तक, करें
-
j के लिए रेंज 0 से लेकर मैट्रिक्स की कॉलम काउंट तक, करें
-
अगर आर [i] <सी [जे], तो
-
मैट्रिक्स [i, j] :=r[i]
-
-
अन्यथा,
-
मैट्रिक्स [i, j] :=c[j]
-
-
-
-
रिटर्न मैट्रिक्स
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण
class Solution: def solve(self, matrix): r = [max(i) for i in matrix] c = [max(i) for i in zip(*matrix)] for i in range(len(matrix)): for j in range(len(matrix[i])): if r[i] < c[j]: matrix[i][j] = r[i] else: matrix[i][j] = c[j] return matrix ob = Solution() matrix = [ [2, 3, 4], [5, 6, 7], [8, 9, 10] ] print(ob.solve(matrix))
इनपुट
[[2, 3, 4], [5, 6, 7], [8, 9, 10]]
आउटपुट
[[4, 4, 4], [7, 7, 7], [8, 9, 10]]