【LeetCode】剑指 Offer(3)

简介: 【LeetCode】剑指 Offer(3)

写在前面:

每日一题真的是难,反正我是搞不定了,开摆。


另外,我最近要军训两周,也不知道能不能坚持每天更新了,


我现在是拿我休息的时间码文了........好累。


题目:剑指 Offer 09. 用两个栈实现队列 - 力扣(Leetcode)


题目的接口:

class CQueue {
public:
    CQueue() {
    }
    void appendTail(int value) {
    }
    int deleteHead() {
    }
};
/**
 * Your CQueue object will be instantiated and called as such:
 * CQueue* obj = new CQueue();
 * obj->appendTail(value);
 * int param_2 = obj->deleteHead();
 */

解题思路:

建两个栈,


一个用来接受队列尾插的值,


一个用来充当队列的头删。


当队列需要进行头删的时候,


将原本接收队列尾插值的那个栈的元素放到另一个栈中,


这样就实现了队列头位于第二个栈的栈顶位置。


之后再进行出栈就是队列的头删了。


代码:

class CQueue {
public:
    //建两个栈
    stack push_st;
    stack del_st;
    CQueue() {
    }
    void appendTail(int value) {
        //直接存放值进栈里
        push_st.push(value);
    }
    int deleteHead() {
        //如果队列为空,返回-1
        if(push_st.empty() && del_st.empty())
        {
            return -1;
        }
        int tmp = 0;
        //如果用来头删的栈里有数据,就直接pop
        if(!del_st.empty())
        {
            tmp = del_st.top();
            del_st.pop();
            return tmp;
        }
        //将所以数据转移到用来删除的栈中
        //这个动作还能将队列第一个存放的数据移到栈顶
        while(!push_st.empty())
        {
            tmp = push_st.top();
            push_st.pop();
            del_st.push(tmp);
        }
        //然后pop再返回即可
        del_st.pop();
        return tmp;
    }
};
/**
 * Your CQueue object will be instantiated and called as such:
 * CQueue* obj = new CQueue();
 * obj->appendTail(value);
 * int param_2 = obj->deleteHead();
 */

过啦!!!


写在最后:

以上就是本篇文章的内容了,感谢你的阅读。


如果喜欢本文的话,欢迎点赞和评论,写下你的见解。


如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。


之后我还会输出更多高质量内容,欢迎收看。


相关文章
|
29天前
|
存储
【LeetCode】剑指 Offer 54. 二叉搜索树的第k大节点
【LeetCode】剑指 Offer 54. 二叉搜索树的第k大节点
24 1
|
1月前
|
算法 DataX
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
|
1月前
|
算法 定位技术
【leetcode】剑指 Offer II 105. 岛屿的最大面积-【深度优先DFS】
【leetcode】剑指 Offer II 105. 岛屿的最大面积-【深度优先DFS】
24 0
|
1月前
|
Go
golang力扣leetcode 剑指Offer II 114. 外星文字典
golang力扣leetcode 剑指Offer II 114. 外星文字典
30 0
|
1月前
「LeetCode」剑指 Offer 40. 最小的k个数
「LeetCode」剑指 Offer 40. 最小的k个数
34 0
|
1月前
leetcode 剑指 Offer 32 - III. 从上到下打印二叉树 III
leetcode 剑指 Offer 32 - III. 从上到下打印二叉树 III
27 0
|
1月前
leetcode 剑指 Offer 32 - II. 从上到下打印二叉树 II
leetcode 剑指 Offer 32 - II. 从上到下打印二叉树 II
30 0
|
1月前
/leetcode 剑指 Offer 32 - I. 从上到下打印二叉树
/leetcode 剑指 Offer 32 - I. 从上到下打印二叉树
25 0
|
1月前
leetcode 剑指 Offer 40. 最小的k个数
leetcode 剑指 Offer 40. 最小的k个数
23 0
|
1月前
LeetCode 剑指 Offer 28. 对称的二叉树
LeetCode 剑指 Offer 28. 对称的二叉树
21 0