leetcode:969. 煎饼排序(排序)

题目:

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;
上一篇:P1038 神经网络(60)


下一篇:【LEETCODE】57、数组分类,适中级别,题目:969、442、695