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

Number of Islands

تأتي الخريطة على هيئة قائمة من الصفوف متساوية الطول. كل محرف إما 1، وهو مربع من اليابسة، أو 0، وهو مربع من الماء. ينتمي مربعا يابسة إلى الجزيرة نفسها إذا كان أحدهما يقع مباشرةً فوق الآخر أو تحته أو إلى يساره أو يمينه. أما المربعات التي لا تتلامس إلا عند زاوية فلا تُعد متصلة.

خذ الخريطة ["11000", "11000", "00100", "00011"]:

  • تشكل مربعات اليابسة الأربعة في الزاوية العلوية اليسرى جزيرة واحدة،
  • المربع المنفرد في الصف الأوسط جزيرة ثانية، لأنه لا يتلامس مع الجزيرة الأولى إلا عند زاوية،
  • ويشكل المربعان في أسفل اليمين جزيرة ثالثة.

إذن، تضم الخريطة 3 جزر.

الخريطة في الواقع رسم بياني: كل مربع من اليابسة هو عقدة، وتصل حافة بين مربعي اليابسة اللذين يشتركان في ضلع. يعني عدّ الجزر عدّ الأجزاء المتصلة من ذلك الرسم البياني. في كل مرة تعثر فيها على مربع يابسة لم تزره بعد، تكون قد عثرت على جزيرة جديدة، وتستكشفها بالكامل قبل الانتقال إلى غيرها.

اكتب دالة باسم numIslands تستقبل grid، وهي قائمة من السلاسل النصية المكوّنة من 1 (يابسة) و0 (ماء)، وتُرجع عدد الجزر. الجزيرة مجموعة من مربعات اليابسة المتصلة أفقيًا أو عموديًا.

على سبيل المثال، تُرجع ["01110", "01000", "00011", "11001"] القيمة 3: الشكل في الصفوف العلوية، والمجموعة على اليمين، والزوج في الزاوية السفلية اليسرى.

القيود: 1 <= عدد الصفوف، عدد الأعمدة <= 150. جميع الصفوف لها الطول نفسه.

الدالة

numIslands(arg1: string-array) → integer
arg1string-array
تُرجعinteger

أمثلة

المدخلات
arg1 = ["11000", "11000", "00100", "00011"]
المخرجات
3

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

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

الحالة 1

الحالة 2

المدخلات

arg1 = ["11000", "11000", "00100", "00011"]

المتوقع

3