المشكلة هي على النحو التالى:
نظرًا لمصفوفة أعداد صحيحة وقيمة صحيحة، قم بإزالة كافة تكرارات val في الأعداد في المكان. قد يتغير ترتيب العناصر. ثم قم بإرجاع عدد العناصر بالأرقام التي لا تساوي val.
ضع في اعتبارك عدد العناصر في الأعداد التي لا تساوي val be k، للحصول على القبول، عليك القيام بالأمور التالية:
القاضي المخصص:
سيختبر القاضي الحل الخاص بك باستخدام الكود التالي:
int[] nums = [...]; // Input array int val = ...; // Value to remove int[] expectedNums = [...]; // The expected answer with correct length. // It is sorted with no values equaling val. int k = removeElement(nums, val); // Calls your implementation assert k == expectedNums.length; sort(nums, 0, k); // Sort the first k elements of nums for (int i = 0; iإذا نجحت جميع التأكيدات، فسيتم قبول الحل الخاص بك.
مثال 1:
Input: nums = [3,2,2,3], val = 3 Output: 2, nums = [2,2,_,_] Explanation: Your function should return k = 2, with the first two elements of nums being 2. It does not matter what you leave beyond the returned k (hence they are underscores).مثال 2:
Input: nums = [0,1,2,2,3,0,4,2], val = 2 Output: 5, nums = [0,1,4,0,3,_,_,_] Explanation: Your function should return k = 5, with the first five elements of nums containing 0, 0, 1, 3, and 4. Note that the five elements can be returned in any order. It does not matter what you leave beyond the returned k (hence they are underscores).إليك كيفية حل المشكلة:
لحل هذه المشكلة، استخدمت استراتيجيتين رئيسيتين:
- الاستبدال الموضعي: بدلاً من إنشاء مصفوفة جديدة لتخزين العناصر التي لا تساوي val، استخدم نفس أرقام المصفوفة للكتابة فوق العناصر التي تحتاج إلى إزالتها.
- تقنية المؤشرين: مؤشر واحد (i) يتكرر خلال كل عنصر في المصفوفة، ومؤشر آخر (k) يتتبع الموضع الذي يجب أن يوضع فيه العنصر غير Val التالي.
class Solution: def removeElement(self, nums: List[int], val: int) -> int: k = 0
for i in range(len(nums)): if nums[i] != val: nums[k] = nums[i] k = 1
return k
إليك الحل الكامل:
class Solution: def removeElement(self, nums: List[int], val: int) -> int: k = 0 for i in range(len(nums)): if nums[i] != val: nums[k] = nums[i] k = 1 return k
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3