मान लीजिए कि हमारे पास 2D मैट्रिक्स मैट है। हमें मैट्रिक्स तत्वों को सर्पिल तरीके से प्रिंट करना होगा। सबसे पहले पहली पंक्ति (mat[0, 0]) से शुरू करते हुए, पूरी सामग्री को प्रिंट करें और फिर प्रिंट करने के लिए अंतिम कॉलम का अनुसरण करें, फिर अंतिम पंक्ति, और इसी तरह, इस प्रकार यह तत्वों को एक सर्पिल फैशन में प्रिंट करता है।पी>
तो, अगर इनपुट पसंद है
7 | 10 | 9 |
2 | 9 | 1 |
6 | 2 | 3 |
9 | 1 | 4 |
2 | 7 | 5 |
9 | 9 | 11 |
तो आउटपुट [7, 10, 9, 1, 3, 4, 5, 11, 9, 9, 2, 9, 6, 2, 9, 2, 1, 7]
होगा।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- घ :=0
- शीर्ष:=0, नीचे:=मैट्रिक्स की पंक्ति गणना – 1, बाएँ:=0, दाएँ:=मैट्रिक्स की स्तंभ संख्या – 1
- सी :=0
- res :=एक नई सूची
- दिशा:=0
- जबकि ऊपर <=नीचे और बाएँ <=दाएँ, करें
- यदि दिशा 0 के समान है, तो
- मैं के लिए बाएं से दाएं + 1 की सीमा में, करो
- मैट्रिक्स[टॉप, i] को रेस में डालें
- शीर्ष:=शीर्ष + 1
- मैं के लिए बाएं से दाएं + 1 की सीमा में, करो
- यदि दिशा 1 के समान है, तो
- i के लिए ऊपर से नीचे + 1 की श्रेणी में, करें
- मैट्रिक्स[i, दाएं] को रेस में डालें
- दाएं:=दाएं - 1
- i के लिए ऊपर से नीचे + 1 की श्रेणी में, करें
- यदि दिशा 2 के समान है, तो
- मेरे लिए दाएं से बाएं -1 की सीमा में, 1 से घटाएं
- मैट्रिक्स[डाउन, i] को रेस में डालें
- नीचे:=नीचे - 1
- मेरे लिए दाएं से बाएं -1 की सीमा में, 1 से घटाएं
- यदि दिशा 3 के समान है, तो
- मेरे लिए नीचे से ऊपर तक -1 की श्रेणी में, 1 से घटाएं
- मैट्रिक्स[i, लेफ्ट] को रेस में डालें
- बाएं:=बाएं + 1
- मेरे लिए नीचे से ऊपर तक -1 की श्रेणी में, 1 से घटाएं
- यदि दिशा 0 के समान है, तो
- दिशा:=(दिशा + 1) मॉड 4
- रिटर्न रेस
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण
class Solution: def solve(self, matrix): d = 0 top = 0 down = len(matrix) - 1 left = 0 right = len(matrix[0]) - 1 c = 0 res = [] direction = 0 while top <= down and left <= right: if direction == 0: for i in range(left, right + 1): res.append(matrix[top][i]) top += 1 if direction == 1: for i in range(top, down + 1): res.append(matrix[i][right]) right -= 1 if direction == 2: for i in range(right, left - 1, -1): res.append(matrix[down][i]) down -= 1 if direction == 3: for i in range(down, top - 1, -1): res.append(matrix[i][left]) left += 1 direction = (direction + 1) % 4 return res ob = Solution() matrix = [ [7, 10, 9], [2, 9, 1], [6, 2, 3], [9, 1, 4], [2, 7, 5], [9, 9, 11] ] print(ob.solve(matrix))
इनपुट
[ [7, 10, 9],[2, 9, 1],
[6, 2, 3],[9, 1, 4],
[2, 7, 5],[9, 9, 11]
]
आउटपुट
[7, 10, 9, 1, 3, 4, 5, 11, 9, 9, 2, 9, 6, 2, 9, 2, 1, 7]