我最近看到一个问题 which req. 在 O(1) 空间中反转堆栈。
1)堆栈不一定是数组......我们无法访问索引。
2)元素数量未知。
我想出了下面的代码,它正在工作,但是not convinced that it is O(1) space because i have declared "int temp" exactly n times
,假设堆栈中最初有 n 个元素)so it has taken O(n) space.
请告诉我是否正确,是否有更好的方法来找到解决方案?
代码:
#include<bits/stdc++.h>
using namespace std;
stack<int>st;
void rec()
{
if(st.empty())
return;
int temp=st.top();
st.pop();
rec();
st.push(temp);
}
int main()
{
st.push(1);
st.push(2);
st.push(3);
st.push(4);
rec();
}