|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目描述:
- 栈排序。 编写程序,对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中。该栈支持如下操作:push、pop、peek 和 isEmpty。当栈为空时,peek 返回 -1。
- 示例1:
- 输入:
- ["SortedStack", "push", "push", "peek", "pop", "peek"]
- [[], [1], [2], [], [], []]
- 输出:
- [null,null,null,1,null,2]
- 示例2:
- 输入:
- ["SortedStack", "pop", "pop", "push", "pop", "isEmpty"]
- [[], [], [], [1], [], []]
- 输出:
- [null,null,null,null,null,true]
- 说明:
- 栈中的元素数目在[0, 5000]范围内。
- 来源:力扣(LeetCode)
- 链接:https://leetcode-cn.com/problems/sort-of-stacks-lcci
- 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
复制代码
- class SortedStack {
- private:
- stack<int>res;
- stack<int>temp;
- public:
- SortedStack() {
-
- }
- void push(int val) {
- if(res.empty() || val < res.top()){
- res.push(val);
- }else{
- while(!res.empty() && val > res.top()){
- temp.push(res.top());
- res.pop();
- }
- res.push(val);
- while(!temp.empty()){
- res.push(temp.top());
- temp.pop();
- }
- }
- }
-
- void pop() {
- if(res.empty()){
- return;
- }
- res.pop();
- }
-
- int peek() {
- if(res.empty()){
- return -1;
- }
- return res.top();
- }
-
- bool isEmpty() {
- return res.empty();
- }
- };
复制代码 |
|