首页 > 试题广场 >

序列操作

[编程题]序列操作
  • 热度指数:2678 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
 有一天你得到了一个长度为 n 的序列,序列中的元素分别是 1,2,3,...,n。接下来你想对这个序 列进行一些操作。每一次操作你会选择一个数然后将它从序列中原来的位置取出并放在序列 的最前面。你想知道经过一系列操作后这个序列长什么样。

数据范围:

输入描述:
第一行包含两个整数 𝑛, 𝑚,分别表示序列的长度和操作的个数。
接下来 𝑚 行每行包含一个整数 𝑘𝑖 ,表示你要把 𝑘𝑖 放到序列的最前面。



输出描述:
从前往后输出序列中的每个元素,每个元素占一行。
示例1

输入

5 3
4
2
5

输出

5
2
4
1
3

说明

初始时序列为 1,2,3,4,5,经过第一次操作后序列为 4,1,2,3,5,经过第二次操作后序列为
2,4,1,3,5,经过第三次操作后序列为 5,2,4,1,3。
头像 17c89
发表于 2024-02-24 12:33:11
import java.util.HashSet; import java.util.Scanner; import java.util.Stack; public class Main { public static void main(String[] args){ S 展开全文
头像 bandiaoz
发表于 2024-12-29 09:04:08
解题思路 题目要求对长度为 的序列进行 次操作,每次将选中的数字 移到序列最前面 关键点是要从后往前处理输入的操作序列,并用一个 visited 数组记录已经输出的数字 最后需要按顺序输出剩余未被访问过的数字 本质上是一个模拟题,需要注意处理顺序 代码 cpp java py 展开全文