直接桶排。O(n)
#include <cstring> using namespace std; int a[1010]; int main() { int n = 0, count = 0; cin >> n; memset(a, 0, sizeof(a)); for (int i = 1; i <= n; i++) { int t = 0; cin >> t; if (!a[t]) { a[t] = 1; count++; } } cout << count << endl; for (int i = 1; i <= 1000; i++) { if (a[i]) cout << i << ' '; } return 0; }