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;
发布了238 篇原创文章 · 获赞 158 · 访问量 7420

猜你喜欢

转载自blog.csdn.net/weixin_42721412/article/details/104715595