栈内取数算法题求助

最近刷到一道关于栈内取数的算法题,没什么头绪,有没有大佬来指导下😂😂😂


题目描述

在一个栈中有一个1-n的排列(即序列的长度为n, 且1-n中每个元素只出现一次),
现在你需要把元素按照一定顺序取出,因为这是一个栈,你不能直接从中拿走某个元素,
你需要先拿走排在
该元素之前的元素,然后将目标元素取出,再把这个元素之前取出的多余元素按照任意顺序放回,
已知拿出和放回一个元素花费的时间均为1.
如原序列是[1,2,3,4],如果我们要拿出元素3,则需要先把1,2,3拿出然后再将1,2放回,
总耗时是5,当然放回后的顺序可以是[2,1,4],也可以是[1,2,4]。
现在拿出序列的顺序是已知的,请你求出拿出每一个元素的最小时间是多少。例如上面的例子,我第二个
想拿出的元素是2,如果放回序列是[1,2,4],则所需时间是3,如果放回序列是[2,1,4],则所需时间是1.

输入描述
输入第一行仅包含一个正整数,表示序列的长度n(n <= 100000)
接下来一行有n个正整数,是1-n的排列,中间用空格隔开,表示栈中的序列顺序
第三行同样是一个1-n的排列,表示拿出元素的顺序

输出描述
输出包含n行,每行一个整数,表示拿出第i个元素的最小花费时间是多少

样例输入
3
3 1 2
3 2 1

样例输出
1
3
1

#学习路径#
全部评论
再用一个栈
点赞 回复 分享
发布于 2021-06-16 07:36

相关推荐

11-24 19:04
已编辑
湖南工商大学 Java
点赞 评论 收藏
分享
程序员小白条:投太少了,多投点吧,二本就海投,然后简历上加点奖项或者四六级之类的,别管有没有用,另外最好搞下个人博客,定期输出一些文章和学习总结,也可以去github参与一下开源项目提一些PR,总会有中小公司看的上的
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务