Code cho câu i ạ
Vấn đề gặp phải là không tạo lại mảng b đc
Tại sao chạy vòng lặp thì mảng b ko đc khởi tạo lại ạ
E có thử xuất mảng b theo các test thì thấy nó bị chồng chéo lên nhau ạ
Còn khi thử int b với số lượng ptu ít thì đc ạ
Có lẽ chạm giới hạn bộ nhớ, thử giải phóng b trước khi lặp vòng mới.
Bài toán yêu cầu số xuất hiện nhiều hơn 1 lần thôi không phải số xuất hiện nhiều nhất.
Tuy nhiên code này khá là tốt
Bạn đã học đến hash table chưa
Đây là code mới của e ạ
Nhưng bị lỗi time limited
Giúp e cải tiến với al 
Ý tưởng về unordered_map (hash table) giống với ý tưởng về mảng b[1000000000] của bạn, nhưng các phần tử từ 0 đến 1 tỉ không sắp xếp theo đúng thứ tự từ 0 đến 1 tỉ trong bộ nhớ mà sắp xếp theo 1 thứ tự đặc biệt được quyết định bởi hàm băm. Hash Table có khả năng tự mở rộng tùy theo số phần tử bạn nhập vào.
#include<iostream>
#include<unordered_map>
using namespace std;
int nhapMang(int a[],int n)
{
//hash table "b"
unordered_map<int, int> b;
for(int i=0;i<n;i++)
{
cin >> a[i];
if(!b[a[i]])
b[a[i]] = 1;
else return a[i];
}
return -1;
}
main()
{
int a[100000];
int t, n;
cin >> t;
for(int i = 0; i < t; i++)
{
cin >> n;
int result = nhapMang(a, n);
if (result != -1) cout << result << endl;
else cout << "NO" << endl;
}
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?