Java教程

本文主要是介绍栈,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

//JS中没有栈,但可以用数组array进行实现
const stack = [];
stack.push(1);
stack.push(2);
const item1 = stack.pop();
const item2 = stack.pop();

//后进先出场景
//十进制转二进制
//字符串括号是否有效 1.js
//函数调用堆栈 2.js

有效地括号

//leetcode 20 有效地括号
// 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
// 有效字符串需满足:
// 左括号必须用相同类型的右括号闭合。
// 左括号必须以正确的顺序闭合。
// 链接:https://leetcode-cn.com/problems/valid-parentheses

var isValid = function(s) {
    const n = s.length;
    if (n % 2 === 1) {
        return false;
    }
    const pairs = new Map([
        [')', '('],
        [']', '['],
        ['}', '{']
    ]);
    const stk = [];
    for (let ch of s){
        if (pairs.has(ch)) {
            if (!stk.length || stk[stk.length - 1] !== pairs.get(ch)) {
                return false;
            }
            stk.pop();
        } 
        else {
            stk.push(ch);
        }
    };
    return !stk.length;
};

// var isValid = function(s){
//     if(s.length % 2 === 1){return false;}
//     const stack = [];
//     for(let i = 0; i < s.length; i+=1){
//         const c = s[i];
//         if(c === '('||c === '{'|| c === '['){
//             stack.push(c);
//         }else{
//             const t = stack[stack.length -1];
//             if(
//                 (t === '('&& c === ')')||
//                 (t === '{'&& c === '}')||
//                 (t === '['&& c === ']')
//             ){
//                 stack.pop();
//             }else{
//                 return false;
//             }
//         }
//     }
//     return stack.length === 0;
// }

函数调用堆栈

//函数调用堆栈
const func1 = () =>{
    func2()
};
const func2 = () =>{
    func3()
};
const func3 = () =>{};

func1();

二叉树的前序遍历

//二叉树的前序遍历
//leetcode 144 二叉树的前序遍历
这篇关于栈的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!