0
点赞
收藏
分享

微信扫一扫

队列Q_via牛客网

mafa1993 2022-02-11 阅读 31

题目

题解

这道题目重点是快速地插入以及删除,这令我想到一个东西 list

但是,

list如果知道下标,那么他的访问速度相比于数组简直就是龟速

如果是搜索元素来的话,和数组一样都是龟速

这里并不知道下标,所以二者是龟速

这里我要写一个搜索引擎,

我明白:搜索引擎+list简直就是无敌

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-krzf6TuJ-1644552707980)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220210195719550.png)]

不要害怕,为list建立索引,当list改变以后,索引仅仅需要修修补补,不要全部都换,因为地址没有改变!!!

代码

#include <iostream>
#include <list>

using namespace std;
list<int> ls;
list<int>::iterator search[1000009];

int main()
{
	int T;
	int n;
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		auto tmp = ls.end();
		int buf;
		cin >> buf;
		ls.push_back(buf);
		tmp--;
		search[buf] = tmp;
	}
	cin >> T;
	while (T--)
	{
		int data;
		string s(12,0);
		cin >> s >> data;
		if (s == "FIRST")
		{
			ls.erase(search[data]);
			ls.push_front(data);
			search[data] = ls.begin();
		}
		else
		{
			
			ls.erase(search[data]);
			ls.push_back(data);
			auto tmp = ls.end();
			tmp--;
			search[data] = tmp;
		}
	}
	for (auto it = ls.begin(); it != ls.end(); it++)
		cout << *it << ' ';
	return 0;
}

然而出现了问题,但是我使用新学的暴力测试的方法解决了;-)

举报

相关推荐

0 条评论