题目描述
blablabla
样例
blablabla
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
include[HTML_REMOVED]
using namespace std;
const int N = 1e6+10;
int e[N],ne[N],idx;
//e[N] 存的是值
//ne[N] 存的是下标
int head;
//idx表示当前用到哪个下标了
//初始化链表
void init(){
head = -1;//链表头指向的下一个坐标是-1
idx = 0;
}
//删除一个数的时候,只是让这个数不再指向或者是不再被指向了,但是数在数组里面还是存在的
//删除第k个数后面一个数
void remove(int k){
ne[k] = ne[ne[k]];
}
//在下标是k的数后面插入一个元素x
void insert(int k,int x){
e[idx] = x;
ne[idx] = ne[k];
ne[k] = idx++;
}
//在链表头插入一个元素
void insert_to_head(int x){
e[idx] = x;
ne[idx] = head;
head = idx;
idx++;
}
int main(){
int m;
cin >> m;
init();
while(m–){
int k,x;
char op[2];
scanf(“%s”,op);
if(op[0] == 'H'){
cin >> x;
insert_to_head(x);
}
else if(op[0] == 'D'){
cin >> k;
//特判看删除的是不是头节点
if(k == 0){
head = ne[head];
}
else{
remove(k-1);
}
}
else if(op[0] == 'I'){
cin >> k >> x;
insert(k-1,x);
}
}
for(int i = head; i!=-1; i=ne[i]) cout << e[i] << " ";
}
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla