[CareerCup] 3.6 Sort Stack 栈排序

简介:

3.6 Write a program to sort a stack in ascending order (with biggest items on top). You may use at most one additional stack to hold items, but you may not copy the elements into any other data structure (such as an array). The stack supports the following operations: push, pop, peek, and isEmpty.

这道题让我们对栈进行排序,栈顶放大的元素,而且限定了我们只能用一个辅助栈。那么我们的思路是,先取出给定栈的栈顶元素存入到一个临时变量中,然后我们看辅助栈的栈顶元素是否大于取出的元素,大的话就把辅助栈的栈顶元素压入给定栈中,直到辅助栈为空或是栈顶元素小于取出值,这时将取出值压入辅助栈,然后继续从给定栈中取值,以此类推直至给定栈取空,这时候辅助栈就是排序完成的结果,返回即可,参见代码如下:

class Solution {
public:
    stack<int> sort(stack<int> s) {
        stack<int> res;
        while (!s.empty()) {
            int v = s.top(); s.pop();
            while (!res.empty() && res.top() > v) {
                s.push(res.top());
                res.pop();
            }
            res.push(v);
        }
        return res;
    }
};

本文转自博客园Grandyang的博客,原文链接:栈排序[CareerCup] 3.6 Sort Stack,如需转载请自行联系原博主。

相关文章
|
2天前
|
存储 算法 搜索推荐
探索常见数据结构:数组、链表、栈、队列、树和图
探索常见数据结构:数组、链表、栈、队列、树和图
77 64
|
11天前
|
算法 安全 测试技术
golang 栈数据结构的实现和应用
本文详细介绍了“栈”这一数据结构的特点,并用Golang实现栈。栈是一种FILO(First In Last Out,即先进后出或后进先出)的数据结构。文章展示了如何用slice和链表来实现栈,并通过golang benchmark测试了二者的性能差异。此外,还提供了几个使用栈结构解决的实际算法问题示例,如有效的括号匹配等。
golang 栈数据结构的实现和应用
|
2天前
|
Go
数据结构之 - 深入了解栈数据结构
数据结构之 - 深入了解栈数据结构
11 5
|
3天前
|
搜索推荐 C++
【初阶数据结构】深度解析七大常见排序|掌握底层逻辑与原理(一)
【初阶数据结构】深度解析七大常见排序|掌握底层逻辑与原理
|
3天前
|
搜索推荐 索引
【初阶数据结构】深度解析七大常见排序|掌握底层逻辑与原理(二)
【初阶数据结构】深度解析七大常见排序|掌握底层逻辑与原理
|
11天前
|
前端开发
07_用队列实现栈
07_用队列实现栈
|
3天前
|
人工智能 搜索推荐 算法
【初阶数据结构】深度解析七大常见排序|掌握底层逻辑与原理(三)
【初阶数据结构】深度解析七大常见排序|掌握底层逻辑与原理
|
3天前
|
存储
【初阶数据结构】深入解析栈:探索底层逻辑
【初阶数据结构】深入解析栈:探索底层逻辑
|
11天前
01_设计一个有getMin功能的栈
01_设计一个有getMin功能的栈
|
11天前
06_用栈来求解汉诺塔问题
06_用栈来求解汉诺塔问题