1 条题解
-
0
📝 题目大意
维护一个初始为空的数列,支持两种操作:向末尾添加元素,以及查询从末尾倒数第 个元素的值。保证查询时数列长度 。
💡 解题思路
- 题目分析:,数据规模极小,直接使用
vector模拟即可,无需任何复杂数据结构。 - 算法推导:
- 使用
vector<int> A存储数列。 - 对于
type == 1操作,读入 后执行A.push_back(x)。 - 对于
type == 2操作,读入 ,从末尾数第 个元素对应下标为A.size() - k(因为末尾元素下标为 ,倒数第 个即为 )。直接输出A[A.size() - k]。
- 使用
- 边界与细节:
- 题目保证查询时数列长度 ,因此无需做越界检查。
- 最大可达 ,
int足够()。
⏱️ 复杂度分析
- 时间复杂度:,每个查询 处理。
- 空间复杂度:,存储数列中的元素。
💻 标准代码 (C++)
#include <iostream> #include <vector> using namespace std; int main() { int Q; cin >> Q; vector<int> A; // 存储数列 for (int i = 0; i < Q; i++) { int type; cin >> type; if (type == 1) { // 操作 1:向末尾添加元素 x int x; cin >> x; A.push_back(x); } else if (type == 2) { // 操作 2:查询从末尾数第 k 个元素 int k; cin >> k; // 末尾元素下标为 size-1,倒数第 k 个下标为 size-k cout << A[A.size() - k] << "\n"; } } return 0; } - 题目分析:,数据规模极小,直接使用
- 1
信息
- ID
- 771
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 上传者