博客
关于我
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/

    你可能感兴趣的文章
    npm install的--save和--save-dev使用说明
    查看>>
    npm node pm2相关问题
    查看>>
    npm run build 失败Compiler server unexpectedly exited with code: null and signal: SIGBUS
    查看>>
    npm run build报Cannot find module错误的解决方法
    查看>>
    npm run build部署到云服务器中的Nginx(图文配置)
    查看>>
    npm run dev 报错PS ‘vite‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
    查看>>
    npm scripts 使用指南
    查看>>
    npm should be run outside of the node repl, in your normal shell
    查看>>
    npm start运行了什么
    查看>>
    npm WARN deprecated core-js@2.6.12 core-js@<3.3 is no longer maintained and not recommended for usa
    查看>>
    npm 下载依赖慢的解决方案(亲测有效)
    查看>>
    npm 安装依赖过程中报错:Error: Can‘t find Python executable “python“, you can set the PYTHON env variable
    查看>>
    npm.taobao.org 淘宝 npm 镜像证书过期?这样解决!
    查看>>
    npm—小记
    查看>>
    npm介绍以及常用命令
    查看>>
    NPM使用前设置和升级
    查看>>
    npm入门,这篇就够了
    查看>>
    npm切换到淘宝源
    查看>>
    npm切换源淘宝源的两种方法
    查看>>
    npm前端包管理工具简介---npm工作笔记001
    查看>>