第3章 数据结构之“栈”

1.栈简介

一个 先进后出的数据结构。
javascript没有栈,但是可以使用array实现栈的所有功能。

const stack = []

// 入栈
stack.push(1)
stack.push(2)

// 出栈(移除最后一个元素)
stack.pop()

2.什么场景实用栈

1.所有【后进先出】的场景。
例如:十进制转二进制,判断字符串的括号是否有,函数调用堆栈…
请添加图片描述
请添加图片描述

请添加图片描述

3.LeetCode:20.有效的括号

解题思路:
新建一个栈
2.扫描字符串,遇左括号入栈,遇到和栈顶括号类型匹配的右括号就出栈,类型不匹配就直接判定不合法。
3.最后栈空了就合法,否则不合法。
请添加图片描述

function leftEqualRight = function (left, right) {
	if(left === '(' && right === ')') return true
	if(left === '{' && right === '}') return true
	if(left === '[' && right === ']') return true
	return false
}


const isVlaid = function (s) {
	// 判断s的字符传长度是否为奇数
	if (s.length % 2 === 1) return false
	const stack = []
	const left = ['(', '[', '{']
	for (var i = 0; i < s.length; i++) {
		const c = s[i]
		if (left.includes(c)) {
			stack.push(c)
		} else {
			const t = stack[stack.length - 1]
			if (leftEqualRight(c, t)) {
				stack.pop()
			} else {
				return false
			}
		}
	}
	return stack.length === 0
}

时间复杂度:o(n)
空间复杂度:o(n)

4.前端与栈:JS中的函数调用堆栈

const func1 = function () => {
	func2()
}

const func2 = function () => {
	func3()
}

const func3 = function () => {
}


func1()

5.栈-章节总结

1.一个 先进后出的数据结构。
2.javascript没有栈,但是可以使用array实现栈的所有功能。
3.栈常用:入栈push, 出栈pop,栈顶:stack[stack.length - 1]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值