Menu
CoddyTech

Set Matrix Zeroes

المدخلات عبارة عن شبكة m × n من الأعداد الصحيحة، مُعطاة صفًا تلو الآخر، لذا تقع matrix[i][j] في الصف i والعمود j. أينما احتوت الشبكة على 0، اجعل الصف بأكمله والعمود بأكمله أصفارًا. تُحتسب الأصفار الموجودة في البداية فقط: فالخلية التي تغيّرها إلى 0 لا تصفّر صفها أو عمودها. يمكنك تغيير الشبكة مباشرةً؛ أعدها.

الدالة

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

القيود

  • m == matrix.length وn == matrix[i].length
  • 1 ≤ m, n ≤ 1000 و m × n ≤ 5000
  • تحتوي جميع الصفوف m على n من القيم.
  • -1000 ≤ matrix[i][j] ≤ 1000

أمثلة

المدخلات
matrix = [[3, 8, 1], [5, 0, 7], [2, 6, 4]]
المخرجات
[[3, 0, 1], [0, 0, 0], [2, 0, 4]]
الشرح
يقع الصفر الوحيد في الصف 1، العمود 1. يصبح الصف 1 كله أصفارًا، وكذلك العمود 1، مما يحوّل 8 و6 إلى 0. لا تقع الزوايا الأربع على أيٍّ من الخطين، لذا تحتفظ بقيمها.
challenge icon

سؤال إضافي

يحتفظ النهج الأفضل أدناه بقيمتين منطقيتين إضافيتين. هل يمكنك الاكتفاء بواحدة، بحيث تمثل matrix[0][0] الصف الأول؟

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

اختبار #1

اختبار #2

وسيط

matrix = [[3, 8, 1], [5, 0, 7], [2, 6, 4]]

الإخراج المتوقع

[[3, 0, 1], [0, 0, 0], [2, 0, 4]]