研习算法第一站-栈(javascript版)

156 阅读1分钟

栈简介

  • 一个后进先出的数据结构
  • javascript没有栈,可以用array数据结构模拟栈的功能
let stack = [];
// 返回栈的长度 1
stack.push(1);
// 返回栈的长度 2
stack.push(2);
// 弹出的数据 2
const item1 = stack.pop();
// 弹出的数据 1
const item2 = stack.pop();

使用场景

  • 后进先出
  • 例如: 十进制转二进制、判断有效的括号、函数调用堆栈...

1634610492191.jpg

1634610564105.jpg

1.jpg

leetcode-cn.com 算法题实战

题目(完整题目打开leetcode)

1634611865006.jpg

解题思路

1634611982169.jpg

题目答案

/**

  • @param {string} s
  • @return {boolean} */ var isValid = function(s) { let stack = [];

/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function(s) {
    let stack = [];
    
    for(let c of s) {
        
        if(c === '(' || c === '[' || c === '{') {
            stack.push(c);
        } else if(c === ')' || c === '}' || c === ']') {
            let top = stack[stack?.length - 1];
            if((top === '(' && c === ')' ) || (top === '[' && c === ']' )  || (top === '{' && c === '}' ) ) {
                stack.pop();
            } else {
                return false;
            }
        }
    }
    return stack.length === 0
};

下一站 队列