leetcode:969. 煎饼排序(排序)
作者:互联网
题目:
分析:
紫书上做过,x不在位置,则先把x翻到最上面,然后翻到指定位置。
代码:
vector<int> A;
vector<int> v;
if(A.size()==1) return v;
if(A.size()==2)
{
if(A[0]==1) return v;
v.push_back(2);
return v;
}
for(int i=A.size();i>1;i--)
{
if(A[i-1]==i) continue;
int loca;
//找位置
for(int j=i-1;;j--)
{
if(A[j-1]==i)
{
loca=j-1;break;
}
}
//反转到最下面
if(loca!=0)
{
v.push_back(loca+1);
stack<int> s;
for(int j=loca;j>=0;j--) s.push(A[j]);
for(int j=loca;j>=0;j--) {
A[j]=s.top();
s.pop();
}
}
//反转到指定位置 i-1
stack<int> s;
for(int j=i-1;j>=0;j--) s.push(A[j]);
for(int j=i-1;j>=0;j--) {
A[j]=s.top();
s.pop();
}
v.push_back(i);
}
if(A[0]!=1) v.push_back(2);
return v;
标签:loca,return,int,969,back,push,排序,leetcode,size 来源: https://blog.csdn.net/weixin_42721412/article/details/104715595