Menu
CoddyTech

Swim in Rising Water

لديك شبكة n × n من الارتفاعات، تحتوي على كل عدد من 0 إلى n²-1 مرة واحدة بالضبط. عند الزمن t، يكون الماء عند الارتفاع t في كل مكان، لذا تكون كل خلية ارتفاعها t أو أقل مغمورة بالماء. تبدأ من الخلية العلوية اليسرى. يمكنك السباحة، دون استغراق أي وقت، إلى خلية تشترك مع خليتك في أحد الجوانب عندما تكون الخليتان مغمورتين بالماء. أعد أقرب وقت يمكنك فيه الوصول إلى الخلية السفلية اليمنى.

الدالة

swimInWater(grid: integer-2d-array) → integer
gridinteger-2d-array
الارتفاعات، على شكل قائمة من n صفوف، يحتوي كل منها على n أعداد
تُرجعinteger
أبكر وقت يمكنك فيه الوصول إلى الخلية السفلية اليمنى

القيود

  • n == grid.length == grid[i].length
  • 1 ≤ n ≤ 100
  • 0 ≤ grid[i][j] ≤ n²-1
  • تظهر كل قيمة من 0 إلى n²-1 مرة واحدة بالضبط.

أمثلة

المدخلات
grid = [[0, 2], [3, 1]]
المخرجات
2
الشرح
عبر الخلية العلوية اليمنى، يكون المسار 0، 2، 1، وأعلى خلية هي 2. وعبر الخلية السفلية اليسرى، يكون المسار 0، 3، 1، وأعلى خلية هي 3. عند الزمن 2، يكون المسار الأول تحت الماء.
challenge icon

سؤال إضافي

إذا كان من الممكن أن تتكرر الارتفاعات وأن تصل إلى 10^9، فأيّ من أساليبك سيظل يعمل دون تغيير، وما الذي ستبحث عنه بحثًا ثنائيًا؟

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

اختبار #1

اختبار #2

اختبار #3

وسيط

grid = [[0, 2], [3, 1]]

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

2