Type: Default 2000ms 256MiB

list模板题

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目描述

现有一个动态数组容器,支持以下操作:插入元素、删除元素、遍历元素和查询元素。你需要使用迭代器来实现这些操作,确保元素的顺序性和迭代器的正确性。具体规则如下:

  1. 插入操作:在指定位置插入元素,若位置不合法则插入到末尾。
  2. 删除操作:删除指定位置的元素,若位置不合法则不删除。
  3. 遍历操作:使用迭代器遍历当前所有元素并输出。
  4. 查询操作:使用迭代器查找第一个等于给定值的元素,并返回其位置(从0开始),若未找到则返回-1。

操作完成后,需输出最终容器中的元素个数。

输入格式

  • 第一行输入一个整数q1 ≤ q ≤ 1000000),表示操作的总次数。
  • 接下来q行,每行表示一次操作,格式如下:
    • 插入操作1 pos x(在位置pos插入元素x,若pos不合法则插入到末尾)。
    • 删除操作2 pos(删除位置pos的元素,若pos不合法则不删除)。
    • 遍历操作3(使用迭代器遍历并输出所有元素)。
    • 查询操作4 x(使用迭代器查找第一个等于x的元素位置)。

输出格式

  • 对于遍历操作(操作3),输出一行元素,元素之间用空格分隔,若容器为空则输出空行。
  • 对于查询操作(操作4),输出一行整数,表示元素位置或-1。
  • 所有操作完成后,输出一行整数,表示容器中剩余元素的个数。

样例 1 输入

6
1 0 10
1 1 20
1 2 30
3
4 20
2 1

样例 1 输出

10 20 30
1
2

样例说明

  1. 插入操作:依次在位置0、1、2插入10、20、30,容器变为[10, 20, 30]
  2. 遍历操作:输出所有元素10 20 30
  3. 查询操作:查找元素20,其位置为1,输出1。
  4. 删除操作:删除位置1的元素,容器变为[10, 30]
  5. 最终元素个数:输出2。

测试点约束

  • 操作次数 q ≤ 1000000
  • 插入元素的位置pos满足0 ≤ pos ≤ 当前元素个数
  • 元素值x的取值范围为int(-2^31 ~ 2^31-1)。

提示

  • 迭代器设计:需要实现一个迭代器类,支持移动到下一个元素、判断是否有下一个元素、获取当前元素等操作。
  • 插入/删除操作:插入或删除元素后,需要确保迭代器的正确性(例如,迭代器指向的元素是否仍然有效)。
  • 动态数组:可使用列表(List)模拟动态数组,但插入和删除操作需注意维护元素顺序。

竞赛3班7.26日习题课

Not Attended
Status
Done
Rule
IOI
Problem
13
Start at
2025-7-26 14:00
End at
2025-7-26 20:00
Duration
6 hour(s)
Host
Partic.
9