首页 > 编程语言 >算法面试通关40讲 - 栈

算法面试通关40讲 - 栈

时间:2024-03-09 17:47:32浏览次数:18  
标签:case return 40 面试 empty pop 通关 braces out

20. 有效的括号

std::stack<T>的几个方法:

  1. top:相当于back
  2. pop:相当于pop_back
  3. push: 相当于push_back
class Solution {
public:
    static char leftOf(char c) {
        switch (c) {
            case ')':
                return '(';
            case '}':
                return '{';
            case ']':
                return '[';
            default:
                break;
        }
        return '*';
    }
    bool isValid(string s) {
        stack<char> braces;
        for (char c: s) {
            switch (c) {
                case '(':
                case '[':
                case '{':
                    braces.push(c);
                    break;
                case ')':
                case ']':
                case '}':
                    if (braces.empty() || braces.top() != leftOf(c)) {
                        return false;
                    } else {
                        braces.pop();
                    }
                default:
                    break;
            }
        }
        return braces.empty();
    }
};
232. 用栈实现队列

颠倒栈元素顺序(类似将链表首节点后面的所有节点做一遍头插,参考:25 K 个一组翻转链表)

class MyQueue {
public:
    MyQueue() {}
    void push(int x) {
        in.push(x);
    }
    int pop() {
            dumpInToOut();
        int value = out.top();
        out.pop();
        return value;
    }
    int peek() {
            dumpInToOut();
        return out.top();
    }
    bool empty() {
        dumpInToOut();
        return out.empty();
    }
private:
    void dumpInToOut() {
        if (out.empty()) {
        while (!in.empty()) {
            out.push(in.top());
            in.pop();
        }}
    }
    stack<int> in;
    stack<int> out;
};

标签:case,return,40,面试,empty,pop,通关,braces,out
From: https://www.cnblogs.com/qqiwei/p/18063027

相关文章

  • 面试准备不充分,被Java守护线程干懵了,面试官主打一个东西没用但你得会
    写在开头面试官:小伙子请聊一聊Java中的精灵线程?我:什么?精灵线程?啥时候精灵线程?面试官:精灵线程没听过?那守护线程呢?我:守护线程知道,就是为普通线程服务的线程嘛。面试官:没了?守护线程的特点,怎么使用,需要注意啥,Java中经典的守护线程都有啥?我:不知道。。。这的天,面试一个10K的工作,......
  • [NCS] nrf5340 VS Code环境搭建
    1、安装工具链(nRF5xcommandlinetools)nRF5xcommandlinetools包括Jlink驱动以及Nordic自己开发的一些命令行工具,具体包括Jlink驱动,nrfjprog,nrfutil以及mergehex等。下载链接为:https://www.nordicsemi.com/Software-and-Tools/Development-Tools/nRF-Command-Line-Tools/Do......
  • 代码随想录算法训练营第四天| 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点
    24.两两交换链表中的节点https://leetcode.cn/problems/swap-nodes-in-pairs/description/publicListNodeswapPairs(ListNodehead){if(head==null||head.next==null)returnhead;ListNoderes=head.next;ListNodepre=newListNod......
  • 代码随想录算法训练营day17 | leetcode 110. 平衡二叉树、257. 二叉树的所有路径、404
    目录题目链接:110.平衡二叉树-简单题目链接:257.二叉树的所有路径-简单题目链接:404.左叶子之和-简单题目链接:110.平衡二叉树-简单题目描述:给定一个二叉树,判断它是否是平衡二叉树示例1:输入:root=[3,9,20,null,null,15,7]输出:true示例2:输入:root=[1,2,2,3,3,null,nul......
  • react面试2
    纯函数+不可变值 JSX的本质等同vue的模板createElement等同h函数第一个参数可能是组件也可能是tag,根据首字母大小写来区分是否是组件第二个参数是null或者{} 合成事件 为什么要这样使用?更好的兼容性和跨平台,尽量摆脱了DOM事件的逻辑,然后自己去实现一......
  • [STL标准库]240308练习
    标准输入输出#include<iostream>#include<bits/stdc++.h>usingnamespacestd;voidTest1(){ inti;charc;doubled;strings,s1; ios::sync_with_stdio(false);//关闭c语言流的链接 cin.tie(0);//关闭cin和cout的链接 cin>>i>>c>>d>>......
  • [洛谷]SP1840
    题目PQUEUE-PrinterQueue学生会里只有一台打印机,但是有很多文件需要打印,因此打印任务不可避免地需要等待。有些打印任务比较急,有些不那么急,所以每个任务都有一个1~9间的优先级,优先级越高表示任务越急。打印机的运作方式如下:首先从打印队列里取出一个任务J,如果队列里有比J更急......
  • react面试
     <pdangerouslySetInnerHTML={{__html:rowHtml}}>事件bind(this)this是undefined静态方法来定义不需要bind:handle=()=>{} event参数event.target指向当前元素,表示绑定在哪里event.currentTarget输出也是当前元素,但是是假象不是原声的event是Synthe......
  • 20240308打卡
    第二周第一天第二天第三天第四天第五天第六天第七天所花时间1h5h1h1.5h1h代码量(行)70116628277博客量(篇)11111知识点了解学会详细地全局路由配置有关动态规划算法python基础知识使用json前后端传值存值数据库原理第一章知识整理......
  • vue面试1
    生命周期函数(父子)顺序父beforeCreate =>.父created==>.父beforeMount==>子beforeCreate==> 子created==> 子beforeMount==> 子mounted==>父mounted更新顺序父beforeUpdate==>子beforeUpdate==>子updated==>父updated卸载顺序父beforeDestory/子before......