المصفوفة هي مجموعة من العناصر لها نفس أنواع البيانات. إنها بنية بيانات خطية ويتم تخزينها في مواقع ذاكرة متجاورة. يمكنك إجراء العديد من العمليات الأساسية على مصفوفة مثل الإدراج والحذف والبحث والتحديث والاجتياز وما إلى ذلك.
في هذه المقالة ، ستتعلم كيفية إزالة العناصر المكررة من المصفوفات المصنفة وغير المرتبة.
كيفية إزالة العناصر المكررة من صفيف غير مصنف
عرض المشكلة
لقد أعطيت مجموعة غير مرتبة من الأعداد الصحيحة. تحتاج إلى إزالة العناصر المكررة من المصفوفة وطباعة المصفوفة بعناصر فريدة.
مثال 1: Let arr = [23، 35، 23، 56، 67، 35، 35، 54، 76]
الصفيف بعد إزالة العناصر المكررة: 23 35 56 67 54 76
وبالتالي ، يكون الناتج 23 35 56 67 54 76.
مثال 2: اسمحوا arr = [5، 6، 1، 1، 7، 5، 8، 2، 7، 8]
الصفيف بعد إزالة العناصر المكررة: 5 6 1 7 8 2
وبالتالي ، يكون الناتج 5 6 1 7 8 2.
نهج لإزالة العناصر المكررة من مصفوفة غير مرتبة
يمكنك إزالة العناصر المكررة من مصفوفة لم يتم فرزها باتباع الطريقة أدناه:
- قم بتهيئة خريطة التجزئة التي ستخزن جميع العناصر الفريدة للمصفوفة.
- اجتياز المصفوفة.
- تحقق مما إذا كان العنصر موجودًا في المصفوفة.
- إذا كان العنصر موجودًا في المصفوفة ، فاستمر في اجتيازه.
- إذا لم يكن العنصر موجودًا في المصفوفة ، اطبع العنصر واحفظه في خريطة التجزئة.
ملحوظة: التعقيد الزمني لهذا الحل هو O (n).
برنامج C ++ لإزالة العناصر المكررة من مصفوفة غير مرتبة
يوجد أدناه برنامج C ++ لإزالة العناصر المكررة من مصفوفة لم يتم فرزها:
// C ++ برنامج لإزالة العناصر المكررة من مصفوفة لم يتم فرزها
#يشمل
استخدام اسم للمحطة؛
// وظيفة لإزالة العناصر المكررة من مصفوفة لم يتم فرزها
void removeDuplicateElements (int arr []، int size)
{
unordered_map م ؛
لـ (int i = 0 ؛ أنا{
// اطبع العنصر إذا لم يكن كذلك
// موجود في خريطة التجزئة
إذا (m.find (arr [i]) == m.end ())
{
cout << arr [i] << ""؛
}
// أدخل العنصر في خريطة التجزئة
م [arr [i]] = صحيح ؛
}
cout << endl؛
}
باطل printArrayElements (int arr []، int size)
{
لـ (int i = 0 ؛ أنا{
cout << arr [i] << ""؛
}
cout << endl؛
}
انت مين()
{
int arr1 [] = {23، 35، 23، 56، 67، 35، 35، 54، 76} ؛
int size1 = sizeof (arr1) / sizeof (arr1 [0]) ؛
cout << "Initial Array:" << endl؛
printArrayElements (arr1، size1) ؛
cout << "Array بعد إزالة التكرارات:" << endl؛
removeDuplicateElements (arr1، size1) ؛
int arr2 [] = {5، 6، 1، 1، 7، 5، 8، 2، 7، 8} ؛
int size2 = sizeof (arr2) / sizeof (arr2 [0]) ؛
cout << "Initial Array:" << endl؛
printArrayElements (arr2، size2) ؛
cout << "Array بعد إزالة التكرارات:" << endl؛
removeDuplicateElements (arr2، size2) ؛
int arr3 [] = {32، 35، 33، 32، 33، 38، 32، 39} ؛
int size3 = sizeof (arr3) / sizeof (arr3 [0]) ؛
cout << "Initial Array:" << endl؛
printArrayElements (arr3، size3) ؛
cout << "Array بعد إزالة التكرارات:" << endl؛
removeDuplicateElements (arr3، size3) ؛
العودة 0 ؛
}
انتاج:
المصفوفة الأولية:
23 35 23 56 67 35 35 54 76
صفيف بعد إزالة التكرارات:
23 35 56 67 54 76
المصفوفة الأولية:
5 6 1 1 7 5 8 2 7 8
صفيف بعد إزالة التكرارات:
5 6 1 7 8 2
المصفوفة الأولية:
32 35 33 32 33 38 32 39
صفيف بعد إزالة التكرارات:
32 35 33 38 39
متعلق ب: كيفية طباعة "Hello، World!" في لغات البرمجة الأكثر شيوعًا
برنامج Python لإزالة العناصر المكررة من مصفوفة غير مرتبة
يوجد أدناه برنامج Python لإزالة العناصر المكررة من مصفوفة لم يتم فرزها:
# برنامج Python لإزالة العناصر المكررة من قائمة لم يتم فرزها
def removeDuplicateElements (arr، size):
م = {}
لأني في النطاق (الحجم):
# اطبع العنصر إذا لم يكن كذلك
# موجودة في القاموس
إذا لم يكن arr [i] في m:
طباعة (arr [i]، end = "")
# أدخل العنصر في القاموس
م [arr [i]] = 1
مطبعة()
def printListElements (arr، size):
لأني في النطاق (الحجم):
طباعة (arr [i]، end = "")
مطبعة()
arr1 = [23 ، 35 ، 23 ، 56 ، 67 ، 35 ، 35 ، 54 ، 76]
size1 = len (arr1)
طباعة ("القائمة الأولية:")
printListElements (arr1، size1)
طباعة ("القائمة بعد إزالة التكرارات:")
removeDuplicateElements (arr1، size1)
arr2 = [5، 6، 1، 1، 7، 5، 8، 2، 7، 8]
size2 = len (arr2)
طباعة ("القائمة الأولية:")
printListElements (arr2، size2)
طباعة ("القائمة بعد إزالة التكرارات:")
removeDuplicateElements (arr2، size2)
arr3 = [32، 35، 33، 32، 33، 38، 32، 39]
size3 = len (arr3)
طباعة ("القائمة الأولية:")
printListElements (arr3، size3)
طباعة ("القائمة بعد إزالة التكرارات:")
removeDuplicateElements (arr3، size3)
انتاج:
المصفوفة الأولية:
23 35 23 56 67 35 35 54 76
صفيف بعد إزالة التكرارات:
23 35 56 67 54 76
المصفوفة الأولية:
5 6 1 1 7 5 8 2 7 8
صفيف بعد إزالة التكرارات:
5 6 1 7 8 2
المصفوفة الأولية:
32 35 33 32 33 38 32 39
صفيف بعد إزالة التكرارات:
32 35 33 38 39
برنامج JavaScript لإزالة العناصر المكررة من مصفوفة غير مصنفة
يوجد أدناه برنامج JavaScript لإزالة العناصر المكررة من مصفوفة لم يتم فرزها:
// برنامج JavaScript لإزالة العناصر المكررة من مصفوفة لم يتم فرزها
// وظيفة لإزالة العناصر المكررة من مصفوفة لم يتم فرزها
وظيفة removeDuplicateElements (arr، size) {
اسمحوا م = خريطة جديدة () ؛
لـ (دع أنا = 0 ؛ أنا // اطبع العنصر إذا لم يكن كذلك
// موجود في خريطة التجزئة
إذا (m.get (arr [i]) == فارغة) {
document.write (arr [i] + "") ؛
}
// أدخل العنصر في خريطة التجزئة
m.set (arr [i]، true) ؛
}
document.write ("
");
}
وظيفة printArrayElements (arr، size) {
لـ (دع أنا = 0 ؛ أناdocument.write (arr [i] + "") ؛
}
document.write ("
");
}
دع arr1 = [23 ، 35 ، 23 ، 56 ، 67 ، 35 ، 35 ، 54 ، 76] ؛
اسمحوا size1 = arr1.length ؛
document.write ("الصفيف الأولي:" + "
");
printArrayElements (arr1، size1) ؛
document.write ("صفيف بعد إزالة التكرارات:" + "
");
removeDuplicateElements (arr1، size1) ؛
دع arr2 = [5، 6، 1، 1، 7، 5، 8، 2، 7، 8] ؛
اسمحوا size2 = arr2.length ؛
document.write ("الصفيف الأولي:" + "
");
printArrayElements (arr2، size2) ؛
document.write ("صفيف بعد إزالة التكرارات:" + "
");
removeDuplicateElements (arr2، size2) ؛
اسمحوا arr3 = [32، 35، 33، 32، 33، 38، 32، 39] ؛
اسمحوا size3 = arr3.length ؛
document.write ("الصفيف الأولي:" + "
");
printArrayElements (arr3، size3) ؛
document.write ("صفيف بعد إزالة التكرارات:" + "
");
removeDuplicateElements (arr3، size3) ؛
انتاج:
المصفوفة الأولية:
23 35 23 56 67 35 35 54 76
صفيف بعد إزالة التكرارات:
23 35 56 67 54 76
المصفوفة الأولية:
5 6 1 1 7 5 8 2 7 8
صفيف بعد إزالة التكرارات:
5 6 1 7 8 2
المصفوفة الأولية:
32 35 33 32 33 38 32 39
صفيف بعد إزالة التكرارات:
32 35 33 38 39
متعلق ب: كيفية حساب تكرارات حرف معين في سلسلة
كيفية إزالة العناصر المكررة من مصفوفة مرتبة
عرض المشكلة
يتم منحك مصفوفة مرتبة من الأعداد الصحيحة. تحتاج إلى إزالة العناصر المكررة من المصفوفة وطباعة المصفوفة بعناصر فريدة.
مثال 1: اسمحوا arr = [1، 1، 1، 2، 4، 6، 8، 8، 9، 9]
الصفيف بعد إزالة العناصر المكررة: 1 2 4 6 8 9
وبالتالي ، يكون الناتج 1 2 4 6 8 9.
مثال 2: اسمحوا arr = [1، 1، 2، 2، 3، 3، 4، 4، 5، 5]
الصفيف بعد إزالة العناصر المكررة: 1 2 3 4 5
وبالتالي ، يكون الناتج 1 2 3 4 5.
نهج لإزالة العناصر المكررة من مصفوفة مرتبة
يمكنك إزالة العناصر المكررة من مصفوفة مرتبة باتباع الطريقة أدناه:
- قم بتهيئة متغيري الفهرس i و j بـ 0.
- كرر المصفوفة.
- إذا لم يكن العنصر i مساويًا للعنصر (i + 1) th ، فقم بتخزين القيمة i في arr [j] وقم بزيادة قيمة j.
- قم بزيادة قيمة i في كل تكرار.
- قم بتخزين آخر قيمة لـ arr in arr [j].
- أخيرًا ، قم بإرجاع الحجم الجديد للمصفوفة ، أي j. سيتم تخزين العناصر الفريدة في المصفوفة من الفهرس 0 إلى j-1.
ملحوظة: التعقيد الزمني لهذا الحل هو O (n).
برنامج C ++ لإزالة العناصر المكررة من مصفوفة مرتبة
يوجد أدناه برنامج C ++ لإزالة العناصر المكررة من مصفوفة مرتبة:
// C ++ لإزالة العناصر المكررة من مصفوفة مرتبة
#يشمل
استخدام اسم للمحطة؛
// وظيفة لإزالة العناصر المكررة من مصفوفة مرتبة
int removeDuplicateElements (int arr []، int size)
{
int j = 0 ؛
لـ (int i = 0 ؛ أنا {
// إذا كان العنصر ith لا يساوي (i + 1) العنصر th ،
// ثم قم بتخزين القيمة في arr [j]
إذا (arr [i]! = arr [i + 1])
{
arr [j] = arr [i] ؛
ي ++ ؛
}
}
// تخزين آخر قيمة لـ arr in arr [j]
arr [j ++] = arr [size-1] ؛
عودة ي
}
باطل printArrayElements (int arr []، int size)
{
لـ (int i = 0 ؛ أنا{
cout << arr [i] << ""؛
}
cout << endl؛
}
انت مين()
{
int arr1 [] = {1، 1، 1، 2، 4، 6، 8، 8، 9، 9} ؛
int size1 = sizeof (arr1) / sizeof (arr1 [0]) ؛
cout << "Initial Array:" << endl؛
printArrayElements (arr1، size1) ؛
cout << "Array بعد إزالة التكرارات:" << endl؛
size1 = removeDuplicateElements (arr1، size1) ؛
printArrayElements (arr1، size1) ؛
int arr2 [] = {1، 1، 2، 2، 3، 3، 4، 4، 5، 5} ؛
int size2 = sizeof (arr2) / sizeof (arr2 [0]) ؛
cout << "Initial Array:" << endl؛
printArrayElements (arr2، size2) ؛
cout << "Array بعد إزالة التكرارات:" << endl؛
size2 = removeDuplicateElements (arr2، size2) ؛
printArrayElements (arr2، size2) ؛
int arr3 [] = {10، 12، 12، 14، 16، 16، 18، 19، 19} ؛
int size3 = sizeof (arr3) / sizeof (arr3 [0]) ؛
cout << "Initial Array:" << endl؛
printArrayElements (arr3، size3) ؛
cout << "Array بعد إزالة التكرارات:" << endl؛
size3 = removeDuplicateElements (arr3، size3) ؛
printArrayElements (arr3، size3) ؛
العودة 0 ؛
}
انتاج:
المصفوفة الأولية:
1 1 1 2 4 6 8 8 9 9
صفيف بعد إزالة التكرارات:
1 2 4 6 8 9
المصفوفة الأولية:
1 1 2 2 3 3 4 4 5 5
صفيف بعد إزالة التكرارات:
1 2 3 4 5
المصفوفة الأولية:
10 12 12 14 16 16 18 19 19
صفيف بعد إزالة التكرارات:
10 12 14 16 18 19
برنامج Python لإزالة العناصر المكررة من مصفوفة مرتبة
يوجد أدناه برنامج Python لإزالة العناصر المكررة من مصفوفة مرتبة:
# برنامج Python لإزالة العناصر المكررة من مصفوفة مرتبة
def removeDuplicateElements (arr، size):
ي = 0
لأني في النطاق (الحجم -1):
إذا arr [i]! = arr [i + 1]:
arr [j] = arr [i]
ي = ي + 1
arr [j] = arr [size-1]
ي = ي + 1
العودة ي
def printListElements (arr، size):
لأني في النطاق (الحجم):
طباعة (arr [i]، end = "")
مطبعة()
arr1 = [1 ، 1 ، 1 ، 2 ، 4 ، 6 ، 8 ، 8 ، 9 ، 9]
size1 = len (arr1)
طباعة ("مصفوفة أولية:")
printListElements (arr1، size1)
طباعة ("صفيف بعد إزالة التكرارات:")
size1 = removeDuplicateElements (arr1، size1)
printListElements (arr1، size1)
arr2 = [1 ، 1 ، 2 ، 2 ، 3 ، 3 ، 4 ، 4 ، 5 ، 5]
size2 = len (arr2)
طباعة ("مصفوفة أولية:")
printListElements (arr2، size2)
طباعة ("صفيف بعد إزالة التكرارات:")
size2 = removeDuplicateElements (arr2، size2)
printListElements (arr2، size2)
arr3 = [10 ، 12 ، 12 ، 14 ، 16 ، 16 ، 18 ، 19 ، 19]
size3 = len (arr3)
طباعة ("مصفوفة أولية:")
printListElements (arr3، size3)
طباعة ("صفيف بعد إزالة التكرارات:")
size3 = removeDuplicateElements (arr3، size3)
printListElements (arr3، size3)
انتاج:
المصفوفة الأولية:
1 1 1 2 4 6 8 8 9 9
صفيف بعد إزالة التكرارات:
1 2 4 6 8 9
المصفوفة الأولية:
1 1 2 2 3 3 4 4 5 5
صفيف بعد إزالة التكرارات:
1 2 3 4 5
المصفوفة الأولية:
10 12 12 14 16 16 18 19 19
صفيف بعد إزالة التكرارات:
10 12 14 16 18 19
متعلق ب: مقدمة لخوارزمية دمج الفرز
برنامج JavaScript لإزالة العناصر المكررة من مصفوفة مرتبة
يوجد أدناه برنامج JavaScript لإزالة العناصر المكررة من مصفوفة مرتبة:
// برنامج JavaScript لإزالة العناصر المكررة من مصفوفة مرتبة
// وظيفة لإزالة العناصر المكررة من مصفوفة مرتبة
وظيفة removeDuplicateElements (arr، size)
{
دع j = 0 ؛
لـ (دع أنا = 0 ؛ أنا {
// إذا كان العنصر ith لا يساوي (i + 1) العنصر th ،
// ثم قم بتخزين القيمة في arr [j]
إذا (arr [i]! = arr [i + 1])
{
arr [j] = arr [i] ؛
ي ++ ؛
}
}
// تخزين آخر قيمة لـ arr in arr [j]
arr [j ++] = arr [size-1] ؛
عودة ي
}
وظيفة printArrayElements (arr، size) {
لـ (دع أنا = 0 ؛ أناdocument.write (arr [i] + "") ؛
}
document.write ("
");
}
var arr1 = [1، 1، 1، 2، 4، 6، 8، 8، 9، 9] ؛
var size1 = arr1.length ؛
document.write ("الصفيف الأولي:" + "
");
printArrayElements (arr1، size1) ؛
document.write ("صفيف بعد إزالة التكرارات:" + "
");
size1 = removeDuplicateElements (arr1، size1) ؛
printArrayElements (arr1، size1) ؛
var arr2 = [1، 1، 2، 2، 3، 3، 4، 4، 5، 5] ؛
var size2 = arr2.length ؛
document.write ("الصفيف الأولي:" + "
");
printArrayElements (arr2، size2) ؛
document.write ("صفيف بعد إزالة التكرارات:" + "
");
size2 = removeDuplicateElements (arr2، size2) ؛
printArrayElements (arr2، size2) ؛
var arr3 = [10 ، 12 ، 12 ، 14 ، 16 ، 16 ، 18 ، 19 ، 19] ؛
var size3 = arr3.length ؛
document.write ("الصفيف الأولي:" + "
");
printArrayElements (arr3، size3) ؛
document.write ("صفيف بعد إزالة التكرارات:" + "
");
size3 = removeDuplicateElements (arr3، size3) ؛
printArrayElements (arr3، size3) ؛
انتاج:
متعلق ب: كيفية البحث عن الحرف الأكثر تكرارا في سلسلة
المصفوفة الأولية:
1 1 1 2 4 6 8 8 9 9
صفيف بعد إزالة التكرارات:
1 2 4 6 8 9
المصفوفة الأولية:
1 1 2 2 3 3 4 4 5 5
صفيف بعد إزالة التكرارات:
1 2 3 4 5
المصفوفة الأولية:
10 12 12 14 16 16 18 19 19
صفيف بعد إزالة التكرارات:
10 12 14 16 18 19
تدرب على مشاكل السلسلة والصفيف لمقابلتك القادمة
تعد مشكلات السلسلة والمصفوفة من أكثر الموضوعات التي يتم طرحها في المقابلات الفنية.
إذا كنت تتطلع إلى أن تكون مستعدًا قدر الإمكان ، فيجب عليك التدرب على بعض المشكلات الشائعة مثل كيفية التحقق مما إذا كانت السلسلة متطابقة ، وكيفية التحقق مما إذا كانت السلسلة مناسبة الجناس الناقص ، والعثور على الحرف الأكثر تكرارا في سلسلة ، وكيفية عكس المصفوفة ، والفرز والبحث الخوارزميات على أساس المصفوفات ، وكيفية عكس سلسلة ، إلخ.
تعرف على كيفية عكس السلسلة من الخلف إلى الأمام بثلاث لغات مختلفة.
اقرأ التالي
- برمجة
- جافا سكريبت
- بايثون
- دروس الترميز
يوفراج طالب جامعي في علوم الكمبيوتر بجامعة دلهي بالهند. إنه متحمس لتطوير الويب Full Stack. عندما لا يكتب ، فإنه يستكشف عمق التقنيات المختلفة.
اشترك في نشرتنا الإخبارية
انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!
انقر هنا للاشتراك