একটি 2D ম্যাট্রিক্স mat দেওয়া আছে। ম্যাট্রিক্সের উপাদানগুলো স্পাইরাল বা বাঁকা পথে প্রিন্ট করতে হবে। প্রথম সারি, তারপর শেষ কলাম, তারপর শেষ সারি, তারপর প্রথম কলাম - এইভাবে বাঁকা পথে সব উপাদান ভিজিট করতে হবে।
উদাহরণ ম্যাট্রিক্সের আউটপুট: [7, 10, 9, 1, 3, 4, 5, 11, 9, 9, 2, 9, 6, 2, 9, 2, 1, 7]
সমাধানের ধাপসমূহ
- top, down, left, right সীমা নির্ধারণ করুন
- direction = 0 (ডান), 1 (নিচ), 2 (বাম), 3 (উপর)
- যবত top <= down এবং left <= right:
- direction অনুযায়ী সারি/কলাম ট্রাভার্স করুন
- সীমা আপডেট করুন এবং direction = (direction+1)%4 করুন
- ফলাফল তালিকা ফেরত দিন
উদাহরণ কোড
class Solution:
def solve(self, matrix):
top = 0
down = len(matrix) - 1
left = 0
right = len(matrix[0]) - 1
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]