Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Xóa phần tử trùng lặp trong mảng số nguyên tố C++


Cho mảng chứa các số nguyên tố (có thể trùng lặp). Nhiệm vụ: xóa các phần tử trùng, giữ lại thứ tự xuất hiện đầu tiên. Ví dụ:

Đầu vào 1: {2,2,2,3,3,3,5,7} → Đầu ra: 2 3 5 7.

Đầu vào 2: {3,2,7,5,5} → Đầu ra: 3 2 7 5.

Phương pháp: Mảng đánh dấu

Vì các số nguyên tố thường nhỏ, ta dùng mảng visited[100] (giả sử số < 100). Duyệt mảng, nếu visited[arr[i]] == 0 thì đánh dấu = 1 và thêm vào vector kết quả.

Ví dụ mã nguồn

#include <bits/stdc++.h>
using namespace std;

vector<int> removeDuplicates(vector<int> &arr, int size) {
    int visited[100] = {0};
    vector<int> res;
    for (int i = 0; i < size; i++) {
        if (!visited[arr[i]]) {
            visited[arr[i]] = 1;
            res.push_back(arr[i]);
        }
    }
    return res;
}

int main() {
    vector<int> arr = {2,2,2,3,3,3,5,7};
    vector<int> ans = removeDuplicates(arr, arr.size());
    for (int x : ans) cout << x << ' ';
    return 0;
}

Kết quả

2 3 5 7

Lưu ý: mã gốc trong ví dụ có lỗi in lặp lại vector trong vòng lặp; đã sửa ở trên.