719. أوجد K-th أصغر مسافة زوجية
الصعوبة: صعب
المواضيع: المصفوفة، المؤشران، البحث الثنائي، الفرز
يتم تعريف مسافة زوج من الأعداد الصحيحة a وb على أنها الفرق المطلق بين a وb.
نظرًا لمصفوفة أعداد صحيحة وعدد صحيح k، قم بإرجاع kth أصغر مسافة بين جميع الأزواج nums[i] وnums[j] حيث 0 .
مثال 1:
(1,3) -> 2 (1,1) -> 0 (3,1) -> 2
ثم 1st أصغر زوج مسافة هو (1,1)، ومسافته هي 0.
مثال 2:
مثال 3:
قيود:
تَلمِيح:
حل:
يمكننا استخدام مزيج من البحث الثنائي وتقنية المؤشرين. إليك طريقة خطوة بخطوة لحل هذه المشكلة:يقترب:
فرز المصفوفة: أولاً، قم بفرز أرقام المصفوفة. يساعد الفرز في حساب عدد الأزواج بكفاءة بمسافة أقل من أو تساوي قيمة معينة.
البحث الثنائي عن المسافة : استخدم البحث الثنائي للعثور على أصغر مسافة k-th. تتراوح مساحة البحث عن المسافات من 0 (أصغر مسافة ممكنة) إلى max(nums) - min(nums) (أكبر مسافة ممكنة).
حساب الأزواج بمسافة ≥ منتصف : لكل قيمة متوسطة في البحث الثنائي، قم بحساب عدد الأزواج بمسافة أقل من أو تساوي المنتصف. ويمكن القيام بذلك بكفاءة باستخدام نهج المؤشرين.
ضبط نطاق البحث الثنائي: اعتمادًا على عدد الأزواج ذات المسافة الأقل أو المساوية للمنتصف، اضبط نطاق البحث الثنائي. إذا كان العدد أقل من k، قم بزيادة الحد الأدنى؛ وإلا قم بتقليل الحد الأعلى.
719. أوجد أصغر مسافة زوجية من K-th
توضيح:countPairsWithDistanceLessThanOrEqualTo: تحسب هذه الدالة عدد الأزواج التي لها مسافة أقل من أو تساوي المنتصف. ويستخدم مؤشرين، حيث اليمين هو العنصر الحالي، ويتم ضبط اليسار حتى يكون الفرق بين الأعداد [يمين] والأعداد [يسار] أقل من أو يساوي المنتصف.
smallestDistancePair: تستخدم هذه الوظيفة البحث الثنائي للعثور على أصغر مسافة k-th. تحدد القيم المنخفضة والعالية نطاق البحث الحالي للمسافات. يتم التحقق من القيمة المتوسطة باستخدام الدالة countPairsWithDistanceLessThanOrEqualTo. واعتماداً على النتيجة يتم تعديل مساحة البحث.
روابط الاتصال
إذا وجدت هذه السلسلة مفيدة، فيرجى التفكير في منحالمستودع نجمة على GitHub أو مشاركة المنشور على شبكات التواصل الاجتماعي المفضلة لديك؟. دعمكم سيعني الكثير بالنسبة لي!
إذا كنت تريد المزيد من المحتوى المفيد مثل هذا، فلا تتردد في متابعتي:
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3