2577. الحد الأدنى من الوقت لزيارة خلية في شبكة
الصعوبة: Hard
المواضيع: صفيف ، بحث عن العرض الأول ، الرسم البياني ، الكومة (قائمة انتظار الأولوية) ، مصفوفة ، أقصر مسار
يتم إعطاؤك شبكة مصفوفة m x n تتكون من غير سالبة من الأعداد الصحيحة حيث تمثل الشبكة [row] [col] أنت تقف في
top-leftخلية المصفوفة في 0 كل خطوة تقوم بها تستغرق ثانية واحدة. إرجاع الحد الأدنى إذا لم تتمكن من زيارة الخلية اليمنى السفلية ، فأرجع -1 .
مثال 1:
الإدخال:
شبكة = [[0،1،3،2] ، [5،1،2،5] ، [4،3،8،6]]
الإدخال:
شبكة = [[0،2،4] ، [3،2،1] ، [1،0،4]]
n == شبكة [i] .Length
2فكر في الحالة التي يتعين عليك فيها الذهاب ذهابًا وإيابًا بين خليتين من المصفوفة لفتح بعض الخلايا الأخرى.
باستخدام قائمة انتظار الأولوية . تطلب منا هذه المشكلة بشكل أساسي العثور على أقصر وقت لزيارة الخلية اليمنى السفلية من الخلية ذات اليسار العلوي ، حيث يكون لكل خطوة قيد زمنية بناءً على القيم الموجودة في الشبكة.
يقترب:تمثيل الرسم البياني
: علاج كل خلية في الشبكة كعقدة. الحواف هي الخلايا المجاورة (لأعلى ، أسفل ، يسار ، يمين) التي يمكنك الانتقال إليها.قائمة انتظار الأولوية (min-heap) : استخدم قائمة انتظار أولوية لاستكشاف الخلية دائمًا بأقل وقت مطلوب. هذا يضمن أننا نعالج الخلايا من أجل أقرب وقت يمكننا فيه الوصول إليها.
تعديل BFS : لكل خلية ، سوف نتحقق مما إذا كان بإمكاننا الانتقال إلى خلاياها المجاورة وتحديث الوقت الذي يمكننا من خلاله زيارتها. إذا تمت زيارة خلية في وقت لاحق من التيار ، فإننا نضيفها مرة أخرى إلى قائمة الانتظار مع الوقت الجديد.
الخروج المبكر : بمجرد أن نصل إلى الخلية اليسرى السفلية ، يمكننا إعادة الوقت. إذا استنفدنا قائمة الانتظار دون الوصول إليها ، فأعود -1.
2577. الحد الأدنى من الوقت لزيارة خلية في شبكة
توضيح:
:
بدءًا من الخلية العلوية اليسرى (0 ، 0) ، تقوم الخوارزمية بمعالجة جميع الخلايا القابلة للوصول ، مع الأخذ في الاعتبار الوقت المبكر لكل منها (أقصى (0 ، شبكة [NewRow] [Newcol] - (الوقت 1))).
تتبع مجموعة زيارة الخلايا التي تمت معالجتها بالفعل لتجنب الحسابات الزائدة والحلقات اللانهائية.
حساب الوقت
:
حالة الحافة
:
تحليل التعقيد
تعقيد الوقت :
تتم إضافة كل خلية إلى قائمة انتظار الأولوية مرة واحدة على الأكثر:
تعقيد الفضاء :
$ grid = [ [0 ، 2 ، 4] ، [3 ، 2 ، 1] ، [1 ، 0 ، 4] ] ؛ صدى الحد الأدنى (الشبكة $) ؛ // الإخراج: -1
هذا الحل فعال ويعمل بشكل جيد ضمن القيود.$grid = [ [0, 1, 3, 2], [5, 1, 2, 5], [4, 3, 8, 6] ]; echo minimumTime($grid); // Output: 7github
$grid = [ [0, 2, 4], [3, 2, 1], [1, 0, 4] ]; echo minimumTime($grid); // Output: -1
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3