لقد وجدت اليوم سؤالًا مثيرًا للاهتمام. فيما يلي وصف الخوارزمية ، والذي يأتي من سؤال مقابلة على Twitter.
وصف خوارزمية برك Twitter Puddles
انظر إلى الصورة أولاً
يتم وصف الأرقام في الشكل أعلاه وفقًا لمحتوى الصفيف. أخيرًا ، سيتم محاكاة ارتفاع الجدار وفقًا لحجم كل رقم ، وسيتم إنشاء الجدار. اسألك ، عندما تمطر ، مقدار الماء الذي يمكن ملء هذا الجدار ، في 1 كوحدة العد.
هنا جدار بعد ملء الماء
بعد قراءة الصورة أعلاه ، هل تشعر أنها ممتعة؟ في الواقع ، دعونا نحلل بإيجاز تطبيق الخوارزمية أدناه.
في الواقع ، هذا المبدأ بسيط نسبيًا ، هناك بعض النقاط الرئيسية:
1. بالتأكيد لا يوجد ماء على الجانبين الأيسر واليمين
2. يعتمد ارتفاع حمولة الماء على الحد الأدنى لقيمة القيم القصوى على الجانبين اليسرى واليمين لنفسه
دعنا نستخدم JS لتنفيذها ببساطة:
نسخة الكود كما يلي:
/**
* احسب مقدار الماء الذي يمكن تثبيته على الحائط بمصطلحات صفيف مثل الارتفاع
* مثال صفيف [2،5،1،2،3،4،7،7،6،9]
**/
وظيفة getWaterCounts (arg) {
var i = 0 ،
J = 0 ،
العد = 0 ؛
// يجب استبعاد العناصر الأولى والأخيرة
لـ (i = 1 ؛ i <arg.length - 1 ؛ i ++) {
var left = math.max.apply (null ، arg.slice (0 ، i + 1)) ؛
var right = math.max.apply (null ، arg.slice (i ، arg.length)) ؛
var min = left> = اليمين؟ اليمين: اليسار ؛
// تسود الحد الأقصى لقيمة الجانبين اليسرى واليمين
// إذا كانت القيمة الحالية أكبر من أو تساوي هذه القيمة ، فلن تفعل شيئًا
if (Arg [i] <min) {
count += min - arg [i] ؛
}
}
console.log (count) ؛
}
GetWatercounts ([2،5،1،2،3،4،7،7،6،9]) ؛ // 11
لخص
Hehe ، أليس التنفيذ بسيطًا جدًا؟ في الواقع ، طالما أنك على استعداد للتفكير ، يمكنك استخدام JS لتنفيذ العديد من الأشياء الممتعة.