题解 | #用一个栈实现另一个栈的排序#

用一个栈实现另一个栈的排序

http://www.nowcoder.com/practice/ff8cba64e7894c5582deafa54cca8ff2

思路:类似于插入排序,每次遇到一个更小的就将前面的都弹出将其插入到正确的位置,再将弹出的再压回来。

#include <iostream>
#include <stack>
using namespace std;
int main(){
    int n, temp;
    stack<int> s1,s2;
    cin>>n;
    while(n--){
        cin>>temp;
        s1.push(temp);
    }
    while(!s1.empty()){
        if(s2.empty()){
            s2.push(s1.top());
            s1.pop();
        }
        else{
            temp=s1.top();
            s1.pop();
            while(!s2.empty()&&s2.top()>temp){
                s1.push(s2.top());
                s2.pop();
            }
            s2.push(temp);
        }
    }
    while(!s2.empty()){
        cout<<s2.top()<<" ";
        s2.pop();
    }
}
全部评论

相关推荐

Yki_:以下条件优先录用: 喜欢去缅北当猪仔的
点赞 评论 收藏
分享
AAA不喝拿铁:校友好,开投就完事了!要准备面试的话更建议刷codetop,hot100有些题并不是面试常考题。另外想看刷题路线的可以看我的帖子,有讲怎么刷leetcode,除此之外可以看看我根据真实面经整理得到的最全(高/中/低频)面试题,加油
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务