本文共 1898 字,大约阅读时间需要 6 分钟。
为了解决这个问题,我们需要去除给定数列中的重复项,只保留第一次出现的数。为了实现这一目标,我们可以使用哈希表来记录已经处理过的数,这样可以快速查找并避免重复记录。
这种方法的时间复杂度是O(n),空间复杂度也是O(n),其中n是输入数据的大小。这种方法高效且适用于处理大规模数据。
#include#include #include #include using namespace std;void readNumber(long long& x) { x = 0; char ch = ' '; while ((ch = getchar()) != '\0') { if (isdigit(ch)) { x = x * 10 + (ch - '0'); } else if (ch == '-') { x = -x; } else { break; } }}void writeNumber(long long x) { if (x < 0) { putchar('-'); x = -x; } if (x == 0) { putchar('0'); return; } while (x > 0) { putchar(x % 10 + '0'); x /= 10; }}int main() { long long t; readNumber(t); for (long long _ = 0; _ < t; ++_) { long long n; readNumber(n); long long* numbers = new long long[n]; for (long long i = 0; i < n; ++i) { long long num; readNumber(num); numbers[i] = num; } unordered_map seen; vector result; for (long long num : numbers) { if (seen.find(num) == seen.end()) { seen[num] = true; result.push_back(num); } } if (result.empty()) { cout << "" << endl; } else { ostringstream oss; for (size_t i = 0; i < result.size(); ++i) { if (i > 0) { oss << ' '; } writeNumber(result[i]); } cout << oss.str() << endl; } delete[] numbers; } return 0;}
readNumber
函数用于读取输入的数值,可以处理负数和多位数。writeNumber
函数用于将数值转换为字符串并输出,处理负数和零的情况。这个方法确保了高效处理和正确输出,适用于处理多个测试用例和大规模数据。
转载地址:http://vuye.baihongyu.com/