Kiểm tra trùng lặp trong mảng C++

Ta đã cho một mảng chứa n số phần tử. Bây giờ, chúng ta phải kiểm tra xem mảng có trùng lặp hay không

  • Nếu mảng đã cho chứa các bản sao, chúng ta phải in Mảng chứa các bản sao
  • Nếu mảng đã cho không chứa trùng lặp, chúng ta phải in Mảng không chứa trùng lặp

Đầu vào

int arr[] = {34, 49, 56, 21, 19, 49, 58};

Vì mảng này chứa các bản sao (giá trị 49). Do đó, đầu ra phải là,

quảng cáo

The Array contains duplicates

Có nhiều cách để kiểm tra xem một mảng có chứa các phần tử trùng nhau hay không. Hãy thảo luận từng phương pháp một

Kiểm tra xem mảng có chứa các bản sao hay không bằng cách sử dụng phương pháp Lặp lại với hai vòng lặp

Theo cách tiếp cận này, mảng được lặp lại bằng cách sử dụng hai vòng lặp. Vòng lặp đầu tiên được sử dụng để chọn từng phần tử trong mảng, trong khi vòng lặp thứ hai được sử dụng để so sánh phần tử được chọn với các phần tử khác. Nếu bất kỳ phần tử nào được tìm thấy tồn tại nhiều hơn một lần, thì cờ sẽ được thay đổi và chỉ ra rằng mảng chứa các phần tử trùng lặp

The Array contains duplicates
4
The Array contains duplicates
5

#include<iostream>
#include<algorithm>

using namespace std;

bool containsDuplicate(int arr[], int size)
{
    bool flag = false;
    //Iterate the loop for checking duplicates
    for(int i=0;i<size;i++)
    {
        for(int j=i+1;j<size;j++)
        {
            // comparing array elements
            if(arr[i]==arr[j])
            {
                flag = true;
            }
        }
    }
    if(flag==true)
    {
        return true;
    }
    else
    {
        return false;
    }
}

int main()
{
    //define an array
    int arr[] = {34,49,56,21,19,49,58};

    //calculating size of array
    int size = sizeof(arr)/sizeof(arr[0]);

    //if duplicates are present in array
    if(containsDuplicate(arr,size))
    {
        cout<<"The Array contains duplicates" << endl;
    }
    else
    {
        cout<<"The Array doesn't contains duplicate" << endl;
    }

    return 0;
}

đầu ra

The Array contains duplicates.

Trong ví dụ trên, chúng tôi đã xác nhận xem mảng có chứa các bản sao hay không

Kiểm tra xem mảng có chứa các bản sao bằng cách sử dụng hàm sort() không

Theo cách tiếp cận này, đầu tiên chúng ta sắp xếp mảng bằng hàm sort(). Kết quả là tất cả các bản sao sẽ được đặt liền kề nhau. Bây giờ với vòng lặp for chúng ta kiểm tra xem các phần tử liền kề có bằng nhau không. Nếu tìm thấy các phần tử trùng lặp thì cờ sẽ được thay đổi. Cờ là dấu hiệu của sự hiện diện của các phần tử trùng lặp trong một mảng

The Array contains duplicates
6
The Array contains duplicates
5

________số 8

đầu ra

The Array contains duplicates.

Trong ví dụ trên, chúng tôi đã xác nhận xem mảng có chứa các bản sao hay không

Kiểm tra xem mảng có chứa các bản sao bằng bản đồ không

Theo cách tiếp cận này, bản đồ không có thứ tự được sử dụng, chứa các cặp khóa-giá trị. Đối với mỗi lần lặp trong mảng, giá trị của phần tử mảng trong bản đồ được tăng thêm 1. Nếu phần tử tồn tại một lần thì giá trị của phần tử là 1. Ngược lại, nếu nó tồn tại nhiều lần thì giá trị của phần tử lớn hơn 1 và sau đó cờ bị thay đổi. Cờ này cho biết mảng chứa các bản sao. Độ phức tạp thời gian là O(n) và độ phức tạp không gian là O(n)

The Array contains duplicates
8
The Array contains duplicates
9

The Array contains duplicates
2

đầu ra

The Array contains duplicates.

Trong ví dụ trên, chúng tôi đã xác nhận xem mảng có chứa các bản sao hay không

Kiểm tra xem mảng có chứa các bản sao bằng cách sử dụng set

Theo cách tiếp cận này, một tập hợp được xây dựng có chứa các phần tử của mảng. Tập hợp có thuộc tính chỉ giữ lại các phần tử riêng biệt. Bây giờ chúng ta so sánh kích thước của tập hợp và kích thước của mảng. Nếu cả hai đều bằng nhau thì mảng chứa các phần tử duy nhất, nếu không thì mảng chứa các phần tử trùng lặp

The Array contains duplicates
8
The Array contains duplicates
9

The Array contains duplicates
6

đầu ra

The Array contains duplicates.

Trong ví dụ trên, chúng tôi đã xác nhận xem mảng có chứa các bản sao hay không

Kiểm tra xem mảng có chứa các bản sao bằng cách sử dụng hàm kề_find ()

Trong cách tiếp cận này, hàm next_find() được sử dụng để phát hiện bất kỳ phần tử liền kề bằng nhau nào có mặt trong một mảng hay không. Nếu có các phần tử liền kề thì hàm trả về trình vòng lặp cho bản sao đầu tiên, nếu không thì trả về trình lặp cho phần cuối của mảng. Nhưng đối với điều này, trước tiên chúng ta cần sắp xếp các phần tử mảng

The Array contains duplicates
8
The Array contains duplicates
5

The Array contains duplicates
0

đầu ra

The Array contains duplicates.

Trong ví dụ trên, chúng tôi đã xác nhận xem mảng có chứa các bản sao hay không

Kiểm tra xem mảng có chứa các bản sao bằng hàm unique() không

Trong cách tiếp cận này, hàm unique() được sử dụng để loại bỏ các bản trùng lặp liền kề trong một mảng được sắp xếp. Đầu tiên sắp xếp mảng và sau đó sử dụng hàm unique(). Hàm unique() trả về một trình vòng lặp. Nếu mảng không chứa bản sao thì trình lặp được trả về trỏ đến cuối mảng, nếu không thì trình lặp sẽ trỏ đến một nơi khác trong mảng

The Array contains duplicates
8
The Array contains duplicates
5

The Array contains duplicates
2

đầu ra

The Array contains duplicates.

Trong ví dụ trên, chúng tôi đã xác nhận xem mảng có chứa trùng lặp hay không sử dụng hàm unique()

Tóm lược

Trong bài viết này, chúng ta đã thấy nhiều phương pháp khác nhau để kiểm tra các phần tử trùng lặp trong một mảng bằng cách sử dụng các hàm STL và bộ chứa STL. Mỗi phương pháp có độ phức tạp về thời gian và không gian riêng. học tập vui vẻ

Bạn có muốn học C++ hiện đại từ những người giỏi nhất không?

Chúng tôi đã tuyển chọn một danh sách các Khóa học C++ Tốt nhất, sẽ dạy cho bạn C++ Hiện đại tiên tiến nhất từ ​​cấp độ cơ bản đến nâng cao. Nó cũng sẽ giới thiệu với bạn về Con trỏ thông minh, Ngữ nghĩa di chuyển, Giá trị giá trị, hàm Lambda, tự động, mẫu Variadic, phạm vi dựa trên vòng lặp, Đa luồng và nhiều tính năng mới nhất khác của C++i. e. từ C++11 đến C++20

Làm cách nào để kiểm tra các bản sao trong mảng trong C?

THUẬT TOÁN. .
BƯỚC 1. BẮT ĐẦU
BƯỚC 2. KHỞI TẠO mảng[]= {1, 2, 3, 4, 2, 7, 8, 8, 3}
BƯỚC 3. chiều dài = sizeof(arr)/sizeof(arr[0])
BƯỚC 4. IN "Sao chép các phần tử trong mảng đã cho. "
BƯỚC 5. ĐẶT tôi = 0. LẶP LẠI BƯỚC 6 đến BƯỚC 9 CHO ĐẾN KHI i<độ dài
BƯỚC 6. ĐẶT j=i+1. .
BƯỚC 7. nếu (mảng [i] == mảng [j]).
BƯỚC 8. j=j+1

Làm cách nào để tìm các số lặp lại trong một mảng C?

Chạy một vòng lặp từ chỉ số 0 đến n và kiểm tra xem (đã truy cập [i]==1) rồi bỏ qua phần tử đó. Nếu không, hãy tạo một biến đếm = 1 để giữ số lượng tần số. Kiểm tra if(arr[i]==arr[j]), sau đó tăng số đếm lên 1 và đặtvisited[j]=1. Sau khi hoàn thành vòng lặp bên trong, hãy kiểm tra nếu (đếm > 1), sau đó in phần tử đó

Làm cách nào để kiểm tra các bản sao trong chuỗi C?

Có 3 phương pháp tìm phần tử trùng trong chuỗi. So sánh với các chữ cái khác . Sử dụng HashTable hoặc đếm. Sử dụng Bit.