Cách đếm số lần xuất hiện phần tử trong mảng?

hi there ! anh/chị có thể gợi ý giúp em vấn đề này không ạ ?

=> cho dãy A 7;7;4;5;7;9;2;5 sẽ cho ra dãy B 7;4;5;9;2 ( số xuất hiện nhiều lần chỉ tính 1 )

Cách làm của em như này :
dùng for lớn cho chạy từ đầu Dãy A là số 7, cho đến số 5. ví dụ đang ở vị trí số 2 thì thì cho vòng for nhỏ chạy từ đầu dãy A đến số 9, nếu 2 xuất hiện trong khoảng đó thì continue, còn nếu không thì thêm 2 vào B. do B không đếm được nên dùng ArrayList .

ý tưởng e như vậy nhưng code không ra kết quả đúng ạ, mong được giúp đỡ

em tìm được đoạn code C này ai đó dịch ra java giúp em với

    #include <iostream>
using namespace std;
 
const int MAX = 1e6;
int cnt[MAX];
 
int main(){
int n;
do{
    cout << "\nNhap n = ";
    cin >> n;
}while(n < 1);
int a[n];
for(int i = 0; i < n;i++){
    do{
        cout << "\nNhap a[" << i << "] = ";
        cin >> a[i];
    }while(a[i] < 0);
}
for(int i = 0;i < MAX; i++) cnt[i] = 0;
for(int i = 0; i < n;i++){
    cnt[a[i]]++;
}
for(int i = 0;i < MAX; i++){
    if(cnt[i] > 0){
        cout << "Gia tri " << i << " xuat hien " << cnt[i] << " lan!\n";
    }
}
}