1 条题解
-
0
📝 题目大意
给定 ,将初始数列 的第 项到第 项进行逆序排列,输出操作后的数列。
💡 解题思路
- 题目分析:,数据范围极小,直接模拟即可。核心是将区间 反转,其余部分保持不变。
- 算法推导:将数列分为三段:
- 前缀 :原样输出 。
- 反转区间 :从 到 降序输出,即 。
- 后缀 :原样输出 。
- 边界与细节:
- 当 时,反转区间长度为 ,降序输出与原序一致,无需特判。
- 当 时,前缀为空,直接从反转区间开始输出。
- 当 时,后缀为空,输出完反转区间即结束。
- 注意末尾不要有多余空格,标准代码中后缀的输出做了特殊处理。
⏱️ 复杂度分析
- 时间复杂度:,遍历每个位置恰好一次。
- 空间复杂度:,仅使用常数个变量。
💻 标准代码 (C++)
#include <iostream> using namespace std; int main() { int N, L, R; cin >> N >> L >> R; // 1. 输出前缀:1 到 L-1 for (int i = 1; i < L; i++) { cout << i << " "; } // 2. 输出反转区间:从 R 降序到 L for (int i = R; i >= L; i--) { cout << i << " "; } // 3. 输出后缀:R+1 到 N(注意控制末尾空格) for (int i = R + 1; i <= N; i++) { if (i > R + 1) cout << " "; cout << i; } cout << endl; return 0; }
- 1
信息
- ID
- 813
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 上传者