Giả sử chúng ta đã cho một mảng N kích thước bao gồm tất cả các số nguyên tố. Nhiệm vụ là tìm các bản sao trong mảng đã cho và loại bỏ chúng. Ví dụ:
Đầu vào-1 -
N = 8 arr[ ] = { 2 ,2 ,2 ,3 ,3 ,3 ,5 ,7 }
Đầu ra -
2 3 5 7
Giải thích - Trong mảng các số nguyên tố đã cho có một số trùng lặp của ‘2’ và ‘3’ sau khi loại bỏ các số trùng lặp thì kết quả sẽ là 2 3 5 7.
Đầu vào-2 -
N = 5 arr[ ] = { 3, 2, 7, 5, 5}
Đầu ra -
3 2 7 5
Giải thích - Trong mảng các số nguyên tố đã cho có một số trùng lặp của ‘5’ sau khi loại bỏ các số trùng lặp thì kết quả sẽ là 3 2 7 5.
Phương pháp tiếp cận để giải quyết vấn đề này
Trong bài toán này, chúng tôi sử dụng một mảng số sẽ xác minh số đó có được truy cập trong mảng hay không. Nếu phần tử mảng không được truy cập, hãy đặt nó là '1' và chèn nó vào kết quả, nếu không thì không cần chèn phần tử.
-
Lấy đầu vào có kích thước N của mảng vectơ có các phần tử.
-
Một mảng vectơ số nguyên removeDuplicates (vector
&arr, int size) lấy một mảng và kích thước của nó làm Đầu vào. -
Một mảng số nguyên mà chúng tôi sử dụng để phát hiện và xác minh xem phần tử hiện tại của chúng tôi có được truy cập hay không. Nếu bất kỳ phần tử nào được truy cập (tức là ‘1’) trong mảng khi đang chèn, thì chúng tôi sẽ không đẩy phần tử cụ thể đó vào trong vectơ. Nếu không, hãy đẩy phần tử đó trong mảng vectơ.
-
Vectơ kết quả sẽ chỉ chứa các số nguyên tố duy nhất.
Ví dụ
#include<bits/stdc++.h> using namespace std; vector<int>removeDuplicates(vector<int>&arr, int size){ int num[100] ={0}; vector<int> vec; for(int i=0;i<size;i++){ if(num[arr[i]] ==0){ num[arr[i]]=1; vec.push_back(arr[i]); } } return vec; } int main(){ int N= 8; vector<int>arr={2,2,2,3,3,3,5,7}; vector<int>answer= removeDuplicates(arr,N); for(int i=0;i<answer.size();i++){ cout<<removeDuplicates(arr,N)<<endl; } return 0; }
Đầu ra
Nếu chúng ta chạy đoạn mã trên thì nó sẽ in đầu ra là,
2 3 5 7
Nếu chúng ta loại bỏ các bản sao, kết quả đầu ra sẽ là 2 3 5 7.