链接:https://www.nowcoder.com/courses/1/4/5
来源:牛客网
实现一个栈的逆序,但是只能用递归函数和这个栈本身的pop操作来实现,而不能自己申请另外的数据结构。
给定一个整数数组A即为给定的栈,同时给定它的大小n,请返回逆序后的栈。
测试样例:
[4,3,2,1],4
返回:[1,2,3,4]
class StackReverse {
public:
int get(stack<int> &ms)
{
int result=ms.top();
ms.pop();
if(ms.empty())
{return result;}
else
{
int last=get(ms);
ms.push(result);
return last;
}
}
void reverse(stack<int> &ms)
{
if(ms.empty())
{
return;
}
int i=get(ms);
reverse(ms);
ms.push(i);
}
vector<int> reverseStack(vector<int> A, int n) {
// write code here
stack<int> ms;
vector<int> ret;
for(int i=n-1;i>=0;i--)
ms.push(A[i]);
reverse(ms);
for(int i=0;i<n;i++)
{
int k=ms.top();
ms.pop();
ret.push_back(k);
}
return ret;
}
};