Ένας πίνακας είναι μια συλλογή στοιχείων με τους ίδιους τύπους δεδομένων. Είναι μια γραμμική δομή δεδομένων και αποθηκεύεται σε γειτονικές θέσεις μνήμης. Μπορείτε να εκτελέσετε πολλές βασικές λειτουργίες σε έναν πίνακα όπως εισαγωγή, διαγραφή, αναζήτηση, ενημέρωση, διέλευση κ.λπ.

Σε αυτό το άρθρο, θα μάθετε πώς μπορείτε να αφαιρέσετε διπλά στοιχεία από ταξινομημένες και μη ταξινομημένες συστοιχίες.

Πώς να αφαιρέσετε διπλά στοιχεία από μια μη ταξινομημένη σειρά

Δήλωση προβλήματος

Σας δίνεται μια σειρά από ακέραιους αριθμούς. Πρέπει να αφαιρέσετε τα διπλά στοιχεία από τον πίνακα και να εκτυπώσετε τον πίνακα με μοναδικά στοιχεία.

Παράδειγμα 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: Let arr = [5, 6, 1, 1, 7, 5, 8, 2, 7, 8]

Σειρά μετά την αφαίρεση διπλών στοιχείων: 5 6 1 7 8 2

Έτσι, η έξοδος είναι 5 6 1 7 8 2.

Προσέγγιση κατάργησης διπλών στοιχείων από μια μη ταξινομημένη σειρά

instagram viewer

Μπορείτε να καταργήσετε διπλά στοιχεία από έναν μη ταξινομημένο πίνακα ακολουθώντας την παρακάτω προσέγγιση:

  1. Αρχικοποιήστε έναν κατακερματισμό που θα αποθηκεύει όλα τα μοναδικά στοιχεία του πίνακα.
  2. Διασχίστε τον πίνακα.
  3. Ελέγξτε εάν το στοιχείο υπάρχει στον πίνακα.
  4. Εάν το στοιχείο υπάρχει στον πίνακα, συνεχίστε.
  5. Εάν το στοιχείο δεν υπάρχει στον πίνακα, εκτυπώστε το στοιχείο και αποθηκεύστε το στο χάρτη κατακερματισμού.

Σημείωση: Η χρονική πολυπλοκότητα αυτής της λύσης είναι O (n).

Πρόγραμμα C ++ για κατάργηση διπλών στοιχείων από μια μη ταξινομημένη σειρά

Ακολουθεί το πρόγραμμα C ++ για την κατάργηση διπλών στοιχείων από έναν μη ταξινομημένο πίνακα:

// C ++ πρόγραμμα για την κατάργηση διπλών στοιχείων από έναν μη ταξινομημένο πίνακα
#περιλαμβάνω
χρησιμοποιώντας το namespace std;
// Λειτουργία για την κατάργηση διπλών στοιχείων από έναν μη ταξινομημένο πίνακα
void removeDuplicateElements (int arr [], int μέγεθος)
{
unordered_map Μ;
για (int i = 0; Εγώ{
// Εκτυπώστε το στοιχείο εάν δεν είναι
// παρόν στον χάρτη κατακερματισμού
εάν (m.find (arr [i]) == m.end ())
{
<< arr [i] << "";
}
// Εισαγάγετε το στοιχείο στο χάρτη κατακερματισμού
m [arr [i]] = αλήθεια;
}
cout << endl;
}
void printArrayElements (int arr [], int μέγεθος)
{
για (int i = 0; Εγώ{
<< arr [i] << "";
}
cout << endl;
}
int main ()
{
int arr1 [] = {23, 35, 23, 56, 67, 35, 35, 54, 76};
int size1 = sizeof (arr1) / sizeof (arr1 [0]);
cout << "Αρχική σειρά:" << endl;
printArrayElements (arr1, size1);
cout << "Σειρά μετά την αφαίρεση διπλότυπων:" << endl;
removeDuplicateElements (arr1, size1);
int arr2 [] = {5, 6, 1, 1, 7, 5, 8, 2, 7, 8};
int size2 = sizeof (arr2) / sizeof (arr2 [0]);
cout << "Αρχική σειρά:" << endl;
printArrayElements (arr2, size2);
cout << "Σειρά μετά την αφαίρεση διπλότυπων:" << endl;
removeDuplicateElements (arr2, size2);
int arr3 [] = {32, 35, 33, 32, 33, 38, 32, 39};
int size3 = sizeof (arr3) / sizeof (arr3 [0]);
cout << "Αρχική σειρά:" << endl;
printArrayElements (arr3, size3);
cout << "Σειρά μετά την αφαίρεση διπλότυπων:" << 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

Σχετίζεται με: Πώς να εκτυπώσετε "Γεια, Κόσμος!" στις πιο δημοφιλείς γλώσσες προγραμματισμού

Πρόγραμμα Python για κατάργηση διπλών στοιχείων από μια σειρά χωρίς ταξινόμηση

Ακολουθεί το πρόγραμμα Python για την κατάργηση διπλών στοιχείων από έναν μη ταξινομημένο πίνακα:

# Πρόγραμμα Python για την κατάργηση διπλών στοιχείων από μια λίστα χωρίς ταξινόμηση
def removeDuplicateElements (arr, μέγεθος):
μ = {}
για i in range (μέγεθος):
# Εκτυπώστε το στοιχείο εάν δεν είναι
# παρόν στο λεξικό
εάν arr [i] όχι σε m:
εκτύπωση (arr [i], end = "")
# Εισαγάγετε το στοιχείο στο λεξικό
m [arr [i]] = 1
Τυπώνω()
def printListElements (arr, μέγεθος):
για i in range (μέγεθος):
εκτύπωση (arr [i], end = "")
Τυπώνω()
arr1 = [23, 35, 23, 56, 67, 35, 35, 54, 76]
μέγεθος1 = len (arr1)
εκτύπωση ("Αρχική λίστα:")
printListElements (arr1, μέγεθος1)
εκτύπωση ("Λίστα μετά την αφαίρεση διπλών:")
removeDuplicateElements (arr1, size1)
arr2 = [5, 6, 1, 1, 7, 5, 8, 2, 7, 8]
μέγεθος2 = len (arr2)
εκτύπωση ("Αρχική λίστα:")
printListElements (arr2, μέγεθος2)
εκτύπωση ("Λίστα μετά την αφαίρεση διπλών:")
removeDuplicateElements (arr2, size2)
arr3 = [32, 35, 33, 32, 33, 38, 32, 39]
μέγεθος3 = len (arr3)
εκτύπωση ("Αρχική λίστα:")
printListElements (arr3, μέγεθος3)
εκτύπωση ("Λίστα μετά την αφαίρεση διπλών:")
removeDuplicateElements (arr3, μέγεθος3)

Παραγωγή:

Αρχική σειρά: 
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 για την κατάργηση διπλών στοιχείων από έναν μη ταξινομημένο πίνακα
// Λειτουργία για την κατάργηση διπλών στοιχείων από έναν μη ταξινομημένο πίνακα
function removeDuplicateElements (arr, μέγεθος) {
ας m = νέος χάρτης ();
για (let i = 0; // Εκτυπώστε το στοιχείο εάν δεν είναι
// παρόν στον χάρτη κατακερματισμού
if (m.get (arr [i]) == null) {
document.write (arr [i] + "");
}
// Εισαγάγετε το στοιχείο στο χάρτη κατακερματισμού
m.set (arr [i], true);
}
document.write ("
");
}
function printArrayElements (arr, μέγεθος) {
για (let i = 0; Εγώdocument.write (arr [i] + "");
}
document.write ("
");
}
ας arr1 = [23, 35, 23, 56, 67, 35, 35, 54, 76];
ας μέγεθος1 = arr1. μήκος;
document.write ("Αρχικός πίνακας:" + "
");
printArrayElements (arr1, size1);
document.write ("Σειρά μετά την αφαίρεση διπλότυπων:" + "
");
removeDuplicateElements (arr1, size1);
ας arr2 = [5, 6, 1, 1, 7, 5, 8, 2, 7, 8];
ας μέγεθος2 = arr2. μήκος;
document.write ("Αρχικός πίνακας:" + "
");
printArrayElements (arr2, size2);
document.write ("Σειρά μετά την αφαίρεση διπλότυπων:" + "
");
removeDuplicateElements (arr2, size2);
ας arr3 = [32, 35, 33, 32, 33, 38, 32, 39];
ας μέγεθος3 = arr3. μήκος;
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: Let arr = [1, 1, 1, 2, 4, 6, 8, 8, 9, 9]

Σειρά μετά την αφαίρεση διπλών στοιχείων: 1 2 4 6 8 9

Έτσι, η έξοδος είναι 1 2 4 6 8 9.

Παράδειγμα 2: Let arr = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5]

Σειρά μετά την αφαίρεση διπλών στοιχείων: 1 2 3 4 5

Έτσι, η έξοδος είναι 1 2 3 4 5.

Προσέγγιση κατάργησης διπλών στοιχείων από μια ταξινομημένη σειρά

Μπορείτε να καταργήσετε διπλά στοιχεία από έναν ταξινομημένο πίνακα ακολουθώντας την παρακάτω προσέγγιση:

  1. Αρχικοποιήστε τις μεταβλητές ευρετηρίου i και j με 0.
  2. Επαναλάβετε τον πίνακα.
  3. Εάν το στοιχείο ith δεν είναι ίσο με το στοιχείο (i + 1), αποθηκεύστε την τιμή ith στο arr [j] και αυξήστε την τιμή του j.
  4. Αυξήστε την τιμή του i σε κάθε επανάληψη.
  5. Αποθηκεύστε την τελευταία τιμή του arr στο arr [j].
  6. Τέλος, επιστρέψτε το νέο μέγεθος του πίνακα, δηλαδή, j. Μοναδικά στοιχεία θα αποθηκευτούν στον πίνακα από το ευρετήριο 0 έως το j-1.

Σημείωση: Η χρονική πολυπλοκότητα αυτής της λύσης είναι O (n).

Πρόγραμμα C ++ για κατάργηση διπλών στοιχείων από μια ταξινομημένη σειρά

Ακολουθεί το πρόγραμμα C ++ για την κατάργηση διπλών στοιχείων από έναν ταξινομημένο πίνακα:

// C ++ πρόγραμμα για την κατάργηση διπλών στοιχείων από έναν ταξινομημένο πίνακα
#περιλαμβάνω
χρησιμοποιώντας το namespace std;
// Λειτουργία για την κατάργηση διπλών στοιχείων από έναν ταξινομημένο πίνακα
int removeDuplicateElements (int arr [], int μέγεθος)
{
int j = 0;
για (int i = 0; {
// Εάν το στοιχείο ith δεν είναι ίσο με το (i + 1) στοιχείο,
// στη συνέχεια αποθηκεύστε την τιμή με arr [j]
αν (arr [i]! = arr [i + 1])
{
arr [j] = arr [i];
j ++;
}
}
// Αποθήκευση της τελευταίας τιμής του arr στο arr [j]
arr [j ++] = arr [μέγεθος-1];
επιστροφή j;
}
void printArrayElements (int arr [], int μέγεθος)
{
για (int i = 0; Εγώ{
<< arr [i] << "";
}
cout << endl;
}
int main ()
{
int arr1 [] = {1, 1, 1, 2, 4, 6, 8, 8, 9, 9};
int size1 = sizeof (arr1) / sizeof (arr1 [0]);
cout << "Αρχική σειρά:" << endl;
printArrayElements (arr1, size1);
cout << "Σειρά μετά την αφαίρεση διπλότυπων:" << 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 << "Αρχική σειρά:" << endl;
printArrayElements (arr2, size2);
cout << "Σειρά μετά την αφαίρεση διπλότυπων:" << 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 << "Αρχική σειρά:" << endl;
printArrayElements (arr3, size3);
cout << "Σειρά μετά την αφαίρεση διπλότυπων:" << 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, μέγεθος):
j = 0
για i in range (μέγεθος-1):
αν arr [i]! = arr [i + 1]:
arr [j] = arr [i]
j = j + 1
arr [j] = arr [μέγεθος-1]
j = j + 1
επιστροφή j
def printListElements (arr, μέγεθος):
για i in range (μέγεθος):
εκτύπωση (arr [i], end = "")
Τυπώνω()
arr1 = [1, 1, 1, 2, 4, 6, 8, 8, 9, 9]
μέγεθος1 = len (arr1)
εκτύπωση ("Αρχική σειρά:")
printListElements (arr1, μέγεθος1)
εκτύπωση ("Σειρά μετά την αφαίρεση διπλών:")
size1 = removeDuplicateElements (arr1, μέγεθος1)
printListElements (arr1, μέγεθος1)
arr2 = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5]
μέγεθος2 = len (arr2)
εκτύπωση ("Αρχική σειρά:")
printListElements (arr2, μέγεθος2)
εκτύπωση ("Σειρά μετά την αφαίρεση διπλών:")
size2 = removeDuplicateElements (arr2, μέγεθος2)
printListElements (arr2, μέγεθος2)
arr3 = [10, 12, 12, 14, 16, 16, 18, 19, 19]
μέγεθος3 = len (arr3)
εκτύπωση ("Αρχική σειρά:")
printListElements (arr3, μέγεθος3)
εκτύπωση ("Σειρά μετά την αφαίρεση διπλών:")
size3 = removeDuplicateElements (arr3, μέγεθος3)
printListElements (arr3, μέγεθος3)

Παραγωγή:

Αρχική σειρά: 
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, μέγεθος)
{
ας j = 0;
για (let i = 0; {
// Εάν το στοιχείο ith δεν είναι ίσο με το (i + 1) στοιχείο,
// στη συνέχεια αποθηκεύστε την τιμή με arr [j]
αν (arr [i]! = arr [i + 1])
{
arr [j] = arr [i];
j ++;
}
}
// Αποθήκευση της τελευταίας τιμής του arr στο arr [j]
arr [j ++] = arr [μέγεθος-1];
επιστροφή j;
}
function printArrayElements (arr, μέγεθος) {
για (let i = 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. μήκος;
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

Εξασκηθείτε σε προβλήματα συμβολοσειράς και συστοιχίας για την επόμενη συνέντευξή σας

Τα προβλήματα χορδών και συστοιχιών συγκαταλέγονται μεταξύ των πιο συχνών θεμάτων σε τεχνικές συνεντεύξεις.

Εάν θέλετε να είστε όσο το δυνατόν πιο προετοιμασμένοι, πρέπει να ασκήσετε ορισμένα κοινά προβλήματα, όπως πώς να ελέγξετε εάν μια συμβολοσειρά είναι παλινδρομή, πώς να ελέγξετε αν μια συμβολοσειρά είναι ένα anagram, βρείτε τον πιο συχνά εμφανιζόμενο χαρακτήρα σε μια συμβολοσειρά, πώς να αντιστρέψετε έναν πίνακα, ταξινόμηση και αναζήτηση αλγορίθμων με βάση συστοιχίες, πώς να αντιστρέψετε μια συμβολοσειρά, και τα λοιπά.

ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ
Πώς να αντιστρέψετε μια συμβολοσειρά σε C ++, Python και JavaScript

Μάθετε πώς να αντιστρέψετε μια συμβολοσειρά από μπροστά σε τρεις διαφορετικές γλώσσες.

Διαβάστε Επόμενο

Σχετικά θέματα
  • Προγραμματισμός
  • JavaScript
  • Πύθων
  • Εκμάθηση κωδικοποίησης
Σχετικά με τον Συγγραφέα
Yuvraj Chandra (40 άρθρα δημοσιεύθηκαν)

Ο Yuvraj είναι προπτυχιακός φοιτητής Πληροφορικής στο Πανεπιστήμιο του Δελχί της Ινδίας. Είναι παθιασμένος με το Full Stack Web Development. Όταν δεν γράφει, εξερευνά το βάθος διαφορετικών τεχνολογιών.

Περισσότερα από τον Yuvraj Chandra

Εγγραφείτε στο newsletter μας

Εγγραφείτε στο ενημερωτικό δελτίο μας για τεχνικές συμβουλές, κριτικές, δωρεάν ebook και αποκλειστικές προσφορές!

Κάντε κλικ εδώ για να εγγραφείτε