ABC356A Subsegment Reverse
题目分析¶
给定一个正整数 $N$,我们先构造数组 $A = [1, 2, 3, ..., N]$。
题目要求将第 $L$ 到第 $R$ 项之间的部分翻转,并输出整个数组。
例如:
- 输入 5 2 3
,原数组为 [1 2 3 4 5]
- 翻转第 $2$ 到第 $3$ 项,变成 [1 3 2 4 5]
解题思路¶
本题可以使用三个连续的循环,按区间直接打印对应的数字:
- 第一个区间:从 $1$ 到 $L-1$,按正常顺序输出;
- 第二个区间:从 $R$ 到 $L$,倒着输出;
- 第三个区间:从 $R+1$ 到 $N$,按正常顺序输出。
这样就不需要用数组、交换或双指针,逻辑更直接。
实现步骤¶
- 使用整型变量
N, L, R
读取输入; - 使用三个
for
循环依次打印每一段; - 每次循环中输出数字和空格;
- 最后一位输出完后换行。
复杂度分析¶
- 时间复杂度:$O(N)$,只遍历了 $N$ 次;
- 空间复杂度:$O(1)$,只用常数个变量,无需额外数组。
总结¶
- 本题可以用数组操作;
- 将输出分为三段处理,逻辑清晰、实现简单;
- 是练习区间处理和循环控制结构的好题目;
- 注意细节,如下标从 $1$ 开始、输出格式要求严格。