TAG
- 双端队列 双端队列 双端队列时间复杂度
- O ( T ∗ N 2 ) O(T \ast N^2) O(T∗N2)
//
#include<bits/stdc++.h>
using namespace std;
// #define int long long
const int N=1111;
int in[N];
void solve()
{
int n;
scanf("%d",&n );
deque<int> dq;
for( int i=1,x;i<=n;i++ ) scanf("%d",&x ),dq.push_back(x);
for( int i=1;i<=n;i++ ) scanf("%d",&in[i] );
vector<int> v;
int idx=n-1;
while( idx>=1 )
{
int x=dq.front(); dq.pop_front();
int y=dq.front(); dq.pop_front();
if( x==in[idx] )
{
if( y==in[idx+1] ) // 1往后 2往后
{
dq.push_back(x); v.push_back(1);
dq.push_back(y); v.push_back(1);
idx--; //
}
else // 2往后 1不动
{
dq.push_back(y); v.push_back(2);
dq.push_front(x);
}
}
else // 1往后 2不动
{
dq.push_back(x); v.push_back(1);
dq.push_front(y);
}
}
while( dq.front()!=in[1] )
{
int x=dq.front(); dq.pop_front();
dq.push_back(x); v.push_back(1);
}
for( auto i:v ) printf("%d",i );
putchar('\n');
}
signed main()
{
int t=1;
scanf("%d",&t );
while( t-- ) solve();
return 0;
}
实现细节
- 无
参考示意图
- 无
参考链接
作者 | 乐意奥AI