栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Leetcode刷题——栈与队列

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Leetcode刷题——栈与队列

Leetcode刷题——栈与队列

一、栈与队列定义二、Leetcode题目

1.用栈实现队列2.用队列实现栈

一、栈与队列定义

栈:先进后出,栈提供push 和 pop 等等接口,所有元素必须符合先进后出规则,所以栈不提供走访功能,也不提供迭代器(iterator)。 不像是set 或者map 提供迭代器iterator来遍历所有元素。栈的底层实现可以是vector,deque,list 都是可以的, 主要就是数组和链表的底层实现。队列:先进先出,同样不允许有遍历行为,不提供迭代器, STL中队列一样是以deque为缺省情况下的底部结构。 二、Leetcode题目 1.用栈实现队列

232. 用栈实现队列

利用两个栈实现队列push实现很简单,pop实现较为复杂pop:将s1元素弹出压入到s2中,再弹出s2的栈顶元素即可实现队列pop.注:先确认s2是空栈,再while循环将s1所有元素压入s2中。peek:取队列头元素再使用pop后需要再把pop的元素压回去。empty:s1.empty()&s2.empty()

class MyQueue {
    stacks1;
    stacks2;
public:
    MyQueue() {
        
    }
    void push(int x) {
        s1.push(x);
    } 
    int pop() {
        if(s2.empty()){
        while(!s1.empty()){
            s2.push(s1.top());
            s1.pop();
        }}
        int result=s2.top();
        s2.pop();
        return result;
    }
    int peek() {
        int res=this->pop();
        s2.push(res);
        return res;
    }
    bool empty() {
        return s1.empty()&&s2.empty();
    }
};
2.用队列实现栈

225. 用队列实现栈

使用一个队列实现栈push实现很简单,pop实现较为复杂由于栈是先进后出,所以想办法将队列的尾元素放到队列首部。即进行q.size()-1次循环完成。循环结束后pop出q.front()元素。top:栈的顶即为队列的尾,q.back()取出,也可使用pop再pushempty:q.empty()

class MyStack {
    queueq;
public:
    MyStack() {
    }
    void push(int x) {
        q.push(x);
    }
    int pop() {
        int size=q.size()-1;
        while(size>0){
            int temp=q.front();
            q.push(temp);
            q.pop();
            size--;
        }
        int res=q.front();
        q.pop();
        return res;
    }
    int top() {
        return q.back();
    }
    bool empty() {
        return q.empty();
    }
};
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/713549.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号