English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
وصف المسألة
تقدم مجموعة مرتبة مسبقًا، قم بإزالة العناصر المكررة من المجموعة، احتفظ بعنصر مكرر واحد فقط، واستعادة طول المجموعة الجديدة.
المطلوب:
لا تقسم مساحة إضافية للنص، يجب أن تستخدم حجم الذاكرة الثابتة للعمل في المكان.
مثال:
تقدم مجموعة A=[1,1,2]، يجب أن يعود طولها length=2، ويصبح A الآن [1,2].
الإدخال
مجموعة مرتبة مسبقًا، مثل [1,1,2].
الإخراج
استعادة طول المجموعة الجديدة، مثل length=2.
طريقة مؤشر السرعة البطيئة
استخدام مؤشر السريع لاستكشاف المجموعة، ويشير المؤشر البطيء إلى الموقع التالي للعنصر المكرر.
public static int removeDuplicates(int[] nums) { إذا (nums.length < 1) تعود nums.length; int slow = 1; لـ (int fast = 1; fast < nums.length; fast++) { إذا (nums[fast] != nums[slow - 1]) { nums[slow++] = nums[fast]; } } تعود slow; }
عرض حركة الرسوم المتحركة:
توسيع
إزالة العناصر المكررة من المجموعة المرتبة، والحفاظ على عدد المرات المحدد.
public static int removeDuplicatesN(int[] nums, int repeatN) { إذا (nums.length <= repeatN) تعود nums.length; int index = repeatN; لـ (int i = repeatN; i < nums.length; i++) { إذا (nums[i] != nums[index - repeatN]) { nums[index++] = nums[i]; } } تعود index; }
هذا هو نهاية محتوى هذا المقال، نأمل أن يكون قد ساعد في تعلمكم، ونأمل أن تحصلوا على الدعم الكبير لـ دروس النطق.
بيان: محتويات هذا المقال مستمدة من الإنترنت، وتنتمي إلى المالك الأصلي، وقد تم إرسالها من قبل مستخدمي الإنترنت بشكل تلقائي، ولا يملك هذا الموقع حقوق الملكية، ولا يتم تعديل المحتوى بشكل يدوي، ولا يتحمل الموقع أي مسؤولية قانونية متعلقة بذلك. إذا اكتشفت محتوى يشتبه في انتهاك حقوق النسخ، فلا تتردد في إرسال بريد إلكتروني إلى: notice#oldtoolbag.com (عند إرسال البريد الإلكتروني، يرجى استبدال # بـ @) للإبلاغ، وتقديم الدليل المتعلق، وسيتم حذف المحتوى المزعوم فور التحقق منه.