Menu
CoddyTech
flag Ar iconالعربيةdown icon

Spiral Matrix

لديك مصفوفة من الأعداد الصحيحة تتكون من m صفوف وn أعمدة، معطاة على شكل قائمة من الصفوف. أعد جميع قيمها بترتيب حلزوني.

ابدأ من الزاوية العلوية اليسرى واتجه يمينًا على طول الصف العلوي، ثم إلى الأسفل على طول العمود الأيمن، ثم إلى اليسار على طول الصف السفلي، ثم إلى الأعلى على طول العمود الأيسر. واصل الدوران إلى الداخل باتجاه عقارب الساعة حتى تُقرأ كل قيمة مرة واحدة بالضبط.

الدالة

spiralOrder(matrix: integer-2d-array) → integer-array
matrixinteger-2d-array
شبكة الأعداد الصحيحة، على هيئة قائمة من صفوف متساوية الطول
تُرجعinteger-array
كل قيمة في المصفوفة بترتيب حلزوني باتجاه عقارب الساعة، بدءًا من الزاوية العلوية اليسرى

القيود

  • 1 ≤ m, n ≤ 80، حيث m = matrix.length وn = matrix[i].length
  • لكل صف الطول نفسه n.
  • -100 ≤ matrix[i][j] ≤ 100

أمثلة

المدخلات
matrix = [[1, 2, 3], [10, 11, 4], [9, 12, 5], [8, 7, 6]]
المخرجات
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
الشرح
تزداد القيم على طول المسار الحلزوني. تُقرأ الحلقة الخارجية كالتالي: 1, 2, 3 على امتداد الجزء العلوي، و4, 5, 6 نزولًا على الجانب الأيمن، ثم 7, 8 عائدًا على امتداد الجزء السفلي، و9, 10 صعودًا على الجانب الأيسر. أما الطبقة الداخلية فهي عمود واحد، يُقرأ مرة واحدة من الأعلى إلى الأسفل: 11, 12.

lock icon+15 اختبارات مخفية عند الإرسال

challenge icon

سؤال إضافي

هل يمكنك إرجاع القيم بترتيب عكس اتجاه عقارب الساعة بدلًا من ذلك، بدءًا من الزاوية العلوية اليسرى والنزول أولًا عبر العمود الأيسر؟

إعادة ضبط الشيفرة
def spiralOrder(matrix):
    # اكتب الكود هنا
حالات الاختبار

الحالة 1

الحالة 2

الحالة 3

المدخلات

matrix = [[1, 2, 3], [10, 11, 4], [9, 12, 5], [8, 7, 6]]

المتوقع

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]