Menu
CoddyTech

Find First and Last Position of Element in Sorted Array

تُعطى قائمة من الأعداد الصحيحة nums مرتبة ترتيبًا غير تنازلي، لذا قد تتكرر قيمة ما، وعدد صحيح target. أعد قائمة من فهرسين، يبدأ العد فيهما من 0: الموضع الأول والموضع الأخير اللذان يظهر فيهما target. إذا لم يكن target موجودًا في القائمة، فأعد [-1, -1]. اسعَ إلى تحقيق زمن تنفيذ O(log n).

الدالة

searchRange(nums: integer-array, target: integer) → integer-array
numsinteger-array
قائمة الأعداد الصحيحة المرتبة، والتي قد تتكرر فيها القيم
targetinteger
القيمة المطلوب البحث عنها
تُرجعinteger-array
الفهرس الأول والفهرس الأخير لـ target، أو [-1, -1] إذا كان غير موجود

القيود

  • 1 ≤ nums.length ≤ 104
  • -104 ≤ nums[i], target ≤ 104
  • nums مرتبة بترتيب غير تنازلي.

أمثلة

المدخلات
nums = [3, 5, 5, 5, 8, 9, 9, 12]target = 5
المخرجات
[1, 3]
الشرح
توجد النسخ الثلاث من 5 عند الفهارس 1 و2 و3، لذا يبدأ التتابع عند الفهرس 1 وينتهي عند الفهرس 3. يحتوي الفهرس 0 على 3 ويحتوي الفهرس 4 على 8، لذا لا يمكن أن يمتد التتابع إلى أبعد من ذلك.
challenge icon

سؤال إضافي

إذا كانت القائمة نفسها تتلقى آلاف الاستعلامات عن أهداف مختلفة، فهل يمكن لتمرير واحد عليها مسبقًا أن يجعل كل استعلام أسرع من O(log n)؟

إعادة ضبط الشيفرة
def searchRange(nums, target):
    # اكتب الكود هنا

اختبار #1

اختبار #2

الوسائط

nums = [3, 5, 5, 5, 8, 9, 9, 12]
target = 5

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

[1, 3]