2 条题解
-
0
📝 题目大意
给定一个长度为 的整数序列 ,以及整数 和 。要求在序列 的第 个元素之后插入整数 ,得到长度为 的新序列 ,并输出 。
💡 解题思路
- 题目分析:数据范围 ,非常小,直接模拟插入操作即可。 表示第 个元素(1-indexed),插入位置在 之后、 之前。
- 算法推导:
- 读入 以及序列 的 个元素。
- 由于 C++ 中
vector下标从 开始,第 个元素对应下标 ,在其后插入即为在A.begin() + K处插入 (即新元素在 之后)。 - 使用
vector::insert完成插入,然后遍历输出即可。 - 注意输出格式:元素之间用空格分隔,行末无多余空格。
- 边界与细节:
- 可以等于 (样例 3),此时 被插入到序列末尾,代码同样能正确处理。
- 可以等于 (样例 2),此时 被插入到第一个元素之后。
- 输出时注意最后一个元素后不要带空格,否则可能导致格式错误(WA)。
⏱️ 复杂度分析
- 时间复杂度:,
vector::insert在末尾插入或任意位置插入都需要移动元素,对 完全可接受。 - 空间复杂度:,存储序列。
💻 标准代码 (C++)
#include <iostream> #include <vector> using namespace std; int main() { int N, K, X; cin >> N >> K >> X; vector<int> A(N); for (int i = 0; i < N; i++) { cin >> A[i]; // 读入原序列 A } // 第 K 个元素下标为 K-1,在其后插入 X 即在下标 K 处插入 A.insert(A.begin() + K, X); for (int i = 0; i < A.size(); i++) { cout << A[i]; if (i != A.size() - 1) { // 控制空格:行末不加多余空格 cout << " "; } } cout << endl; return 0; }
- 1
信息
- ID
- 806
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 2
- 已通过
- 2
- 上传者