美文网首页算法
算法 - 栈类型

算法 - 栈类型

作者: 羽晞yose | 来源:发表于2021-02-27 22:24 被阅读0次

  • 一个后进先出的数据结构
  • javascript中没有栈,但可以用Array实现栈的所有功能

栈的应用场景

  • 需要后进先出的场景
  • 比如:十进制转二进制、判断字符串的括号是否有效、函数调用堆栈……

二进制

二进制
  • 后出来的余数反而要排到前面
  • 把余数依次入栈,然后再出栈,就可以实现余数倒叙输出

有效的括号

leeCode第20题

  • 越靠后的左括号,对应的右括号越靠前
  • 左括号入栈,右括号出栈,最后栈空了就是合法的

该系列并没有完全按照官方答案或参考他人答案,纯粹自己实现。本人并不纠结于是否有更好的实现,纯粹学习思路,毕竟前端算法除了面试基本也用不上了。花过多精力并不值得

/**
 * @param {string} s
 * @return {boolean}
 */
const isValid = function(s) {
    const stack = []
    const signDict = {
        '}': '{',
        ')': '(',
        ']': '['
    }
    const leftSign = ['(', '{', '[']
    const rightSign = [')', '}', ']']

    if (s.length % 2) return false

    for (let i = 0; i < s.length; i++) {
        const str = s[i]
        const isLeftSign = leftSign.includes(str)
        const isRightSign = rightSign.includes(str)

        if (isLeftSign) stack.push(str)
        if (isRightSign) {
            const lastSign = stack.pop()
            return lastSign === signDict[str]
        }
    }

    if (stack.length) return false
}

相关文章

  • 算法 - 栈类型

    栈 一个后进先出的数据结构 javascript中没有栈,但可以用Array实现栈的所有功能 栈的应用场景 需要后...

  • 2019-07-11—栈

    栈:Java数据结构和算法(四)——栈 string和char一般这么转化: 21、定义栈的数据结构,请在该类型中...

  • 送给Android程序员2021全新整理的面试合集,只为助力年后

    垃圾回收算法 标记算法: 引用计数法 可达性分析法(注意GC root的类型,虚拟机栈和本地方法栈引用的对象、静态...

  • 算法学习笔记-基础开篇

    算法定义 基础问题 三种基础的抽象数据类型:背包、队列、栈 用数组、变长数组、链表实现背包、队列、栈的api。 数...

  • 包含min函数的栈

    题意:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。算法思想:定义两个栈,一个用来保存原数...

  • Java实现一个下压栈(栈)

    最近在开始看《算法第四版》,刚学习了两天,感觉还是收获很大。 照着书上实现了一个下压栈: 定容定类型的栈 栈的结构...

  • 144.binary-tree-preorder-travers

    迭代算法,用到了栈

  • 有向图判断是否有环

    深度优先算法:注意flag入栈出栈; 广度优先算法:拓扑序列,不断删去入度为0的节点。

  • 三叉链表的遍历算法

    1. 不借助栈的非递归中序遍历算法 2. 不借助栈的非递归后序遍历算法

  • 算法-栈和队列算法总结

    栈和队列算法总结 1 模拟 1.1 使用栈实现队列 1.2 使用队列实现栈 2 栈的应用 2.1 栈操作 2.2 ...

网友评论

    本文标题:算法 - 栈类型

    本文链接:https://www.haomeiwen.com/subject/bncwfltx.html