博客
关于我
NC14661 简单的数据结构
阅读量:648 次
发布时间:2019-03-15

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

栗酱的数据结构题解

题目链接

数据结构题解

题意

栗酱在网上发现了一道有趣的数据结构题。题目描述了一个容器的操作,涉及七种不同的操作,需要模拟这些操作并输出结果。容器初始为空,操作包括从前面或后面插入、删除元素,以及头尾翻转、排序等功能。

操作说明

  • 从前面插入元素a
  • 从前面删除一个元素
  • 从后面插入一个元素a
  • 从后面删除一个元素
  • 将整个容器头尾翻转
  • 输出容器的个数和所有元素
  • 对所有元素进行从小到大排序
  • 解题思路

    该问题可以通过模拟容器的操作来实现。容器的操作涉及到头尾插入、删除以及整体翻转等操作。由于容器需要支持快速的插入、删除和翻转操作,可以选择使用双端队列(Deque)来模拟容器,因为双端队列支持O(1)时间复杂度的插入和删除操作。

    具体步骤如下:

  • 初始化双端队列。
  • 根据操作类型执行相应的操作。
  • 对于翻转操作,将双端队列中的元素进行交换。
  • 对于排序操作,将双端队列中的元素进行排序。
  • 对于输出操作,输出容器的大小和所有元素。
  • 参考实现

    #include 
    #include
    using namespace std;int main() { int n, m; long long sum = 0; cin >> n >> m; int index; deque
    dq; for(int i = 0; i < m; i++) { cin >> index; if(index == 1) { int tmp; cin >> tmp; dq.push_front(tmp); } else if(index == 2) { if(!dq.empty()) { dq.pop_front(); } } else if(index == 3) { int tmp; cin >> tmp; dq.push_back(tmp); } else if(index == 4) { if(!dq.empty()) { dq.pop_back(); } } else if(index == 5) { if(dq.size() <= 1) continue; int left = dq.begin(); int right = dq.end(); int mid = dq.end() - (dq.size() / 2); auto it = dq.begin(); while(it != mid) { auto temp = *it; *it = *mid; mid--; *mid = temp; it++; } } else if(index == 6) { cout << "Size: " << dq.size() << endl; if(!dq.empty()) { cout << "Elements: "; for(auto num : dq) { cout << num << " "; } cout << endl; } } else if(index == 7) { vector
    vec(dq.begin(), dq.end()); sort(vec.begin(), vec.end()); dq = deque(vec); } } return 0;}

    代码说明

    • 使用双端队列(deque)来模拟容器,支持O(1)时间复杂度的插入和删除操作。
    • 操作1和操作3分别从前面和后面插入元素。
    • 操作2和操作4分别从前面和后面删除元素。
    • 操作5实现头尾翻转,通过交换双端队列中相应位置的元素来实现。
    • 操作6输出容器的大小和所有元素。
    • 操作7将容器中的元素进行排序,使用内置的排序函数来实现。

    转载地址:http://pyhlz.baihongyu.com/

    你可能感兴趣的文章
    NSRange 范围
    查看>>
    NSSet集合 无序的 不能重复的
    查看>>
    NSURLSession下载和断点续传
    查看>>
    NSUserdefault读书笔记
    查看>>
    NS图绘制工具推荐
    查看>>
    NT AUTHORITY\NETWORK SERVICE 权限问题
    查看>>
    NT symbols are incorrect, please fix symbols
    查看>>
    ntelliJ IDEA 报错:找不到包或者找不到符号
    查看>>
    NTFS文件权限管理实战
    查看>>
    ntko web firefox跨浏览器插件_深度比较:2019年6个最好的跨浏览器测试工具
    查看>>
    ntko文件存取错误_苹果推送 macOS 10.15.4:iCloud 云盘文件夹共享终于来了
    查看>>
    ntp server 用法小结
    查看>>
    ntpdate 通过外网同步时间
    查看>>
    ntpdate同步配置文件调整详解
    查看>>
    NTPD使用/etc/ntp.conf配置时钟同步详解
    查看>>
    NTP及Chrony时间同步服务设置
    查看>>
    NTP服务器
    查看>>
    NTP配置
    查看>>
    NUC1077 Humble Numbers【数学计算+打表】
    查看>>
    NuGet Gallery 开源项目快速入门指南
    查看>>