博客
关于我
P4305 [JLOI2011]不重复数字
阅读量:327 次
发布时间:2019-03-04

本文共 1898 字,大约阅读时间需要 6 分钟。

为了解决这个问题,我们需要去除给定数列中的重复项,只保留第一次出现的数。为了实现这一目标,我们可以使用哈希表来记录已经处理过的数,这样可以快速查找并避免重复记录。

方法思路

  • 读取输入数据:首先读取输入数据,包括多个测试用例。每个测试用例包含一个整数n和n个数。
  • 初始化数据结构:使用一个哈希表(如unordered_map)来记录已经处理过的数,键是数值,值是一个布尔标记,用于表示该数是否已经被处理过。
  • 遍历并处理数:遍历输入的数,对于每个数,检查它是否已经在哈希表中存在。如果不存在,则将其添加到结果列表中,并记录到哈希表中;如果已经存在,则跳过。
  • 输出结果:将处理后的结果列表按要求格式输出,两个数之间用空格隔开。
  • 这种方法的时间复杂度是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/

    你可能感兴趣的文章
    Python语言'类'概念再理解
    查看>>
    QTableView结构及用法
    查看>>
    《金融工程》
    查看>>
    敲代码撸案例学习LSTM预测股价
    查看>>
    (2019.6.27)Anaconda清华镜像已恢复使用
    查看>>
    Robomongo使用教程:踩着前辈的路
    查看>>
    Python中Class类与def函数的区别
    查看>>
    OpenAI Gym简介及初级实例
    查看>>
    用Matplotlib和Gym优雅地呈现股票交易智体
    查看>>
    Github上量化交易相关项目汇总
    查看>>
    JS取出两个数组中的不同或相同元素
    查看>>
    Ubuntu 18.04 zip压缩文件及其文件 夹中的所以 内容
    查看>>
    MFC:pic控件的矩形的left、right、top、bottom 坐标位置
    查看>>
    mfc 中在对Gdi+ 进行配置之后,编译产生很多error错误
    查看>>
    int 转 CString
    查看>>
    Edit编辑框自动换行与长度
    查看>>
    STMF4 : error: #928: incorrect use of va_start
    查看>>
    如何在Windows上搭建NFS服务器实现开发板与Windows之间的文件共享
    查看>>
    英语02_单词词性
    查看>>
    C语言08_数组[ Array ]
    查看>>