用JavaScript解决LeetCode搜索插入位置
2023-10-26 11:19:00
** مقدمة:**
في عالم خوارزميات الكمبيوتر، يعتبر LeetCode منصة مشهورة لطلاب وممارسي البرمجة على حد سواء. تقدم LeetCode مجموعة من المشاكل التي تتراوح من السهل إلى الصعب، مما يتيح للمستخدمين اختبار مهاراتهم في حل المشكلات. في هذا المقال، سنستكشف مشكلة Insertion Position Search في LeetCode ونقدم حلاً باستخدام JavaScript.
** فهم المشكلة:**
مشكلة Insertion Position Search في LeetCode هي كما يلي:
معطى مصفوفة مرتبة غير متكررة من الأعداد الصحيحة nums ورقم مستهدف target، أعد فهرس insertion للرقم المستهدف. يتم تعريف فهرس insertion على أنه الفهرس الذي سيتم فيه إدراج الرقم المستهدف في المصفوفة مع الحفاظ على ترتيبها. إذا لم يتم العثور على الرقم المستهدف، فيجب إرجاع الفهرس الذي يجب أن يكون موقع الرقم المستهدف فيه.
** الحل باستخدام JavaScript:**
يمكن حل مشكلة Insertion Position Search بكفاءة باستخدام JavaScript من خلال استخدام خوارزمية البحث الثنائي. إليك الخطوات المتبعة:
- تهيئة المؤشرات: قم بتهيئة مؤشرين، low و high، بحيث يشيران إلى أول وآخر عناصر المصفوفة، على التوالي.
- while (low <= high): استمر في إجراء البحث الثنائي طالما أن low أصغر من أو يساوي high.
- mid = (low + high) >> 1: احسب مؤشر الوسط.
- if (nums[mid] === target): إذا كان العنصر في منتصف المصفوفة يساوي الهدف، فهذا هو فهرس الإدراج. أرجع الوسط.
- if (nums[mid] < target): إذا كان العنصر الموجود في المنتصف أصغر من الهدف، فإن فهرس الإدراج موجود في النصف الأيمن. اضبط low إلى mid + 1.
- if (nums[mid] > target): إذا كان العنصر الموجود في المنتصف أكبر من الهدف، فإن فهرس الإدراج موجود في النصف الأيسر. اضبط high إلى mid - 1.
- أرجع low: بعد الخروج من الحلقة، سيكون low فهرس الإدراج.
مثال:
const nums = [1, 3, 5, 6];
const target = 2;
const searchInsert = (nums, target) => {
let low = 0;
let high = nums.length - 1;
while (low <= high) {
const mid = Math.floor((low + high) / 2);
if (nums[mid] === target) {
return mid;
} else if (nums[mid] < target) {
low = mid + 1;
} else {
high = mid - 1;
}
}
return low;
};
const insertionIndex = searchInsert(nums, target);
console.log(`Insertion index: ${insertionIndex}`);
** النتيجة:**
سيطبع رمز JavaScript الوارد أعلاه فهرس الإدراج في وحدة التحكم. بالنسبة للمصفوفة nums = [1, 3, 5, 6] والهدف target = 2، فإن فهرس الإدراج سيكون 1.
** الخلاصة:**
تُعد مشكلة Insertion Position Search في LeetCode مثالًا جيدًا على كيفية استخدام خوارزميات البحث الثنائي بكفاءة لحل مشكلات البرمجة. باستخدام JavaScript، يمكننا حل هذه المشكلة في تعقيد زمني لوغاريتمي. يساعدنا استخدام مناهج حل المشكلات المدروسة على كتابة أكواد فعالة ويمكن صيانتها.