前端数据结构与算法
数据结构与算法
好处
- 可以让代码化繁为简
- 提高代码性能
- 通过一些公司面试
核心
栈
概念
栈是一种遵循后进先出原则的有序集合。
添加新元素的一端成为栈顶,另一端成为栈底。
栈的实现
入栈:push()
出栈:pop()
获取栈顶值:top()
获取栈的元素个数:size()
清空栈:clear()
// 栈的实现
class Stack {
constructor() {
// 存储栈的数据
this.data = [];
// 记录栈的数据个数(相当于数组的length)
this.count = 0;
}
// push 入栈方法
push (item) {
// 方式一
// ~~this.data.push(item)~~
// 方式二
// ~~this.data[this.data.length] = item;~~
// 方式三
this.data[this.count] = item;
// 添加后count要自增
this.count++;
}
// pop 出栈的方法
pop () {
// 出栈的前提是栈内有值,故应先进行检测
if (this.isEmpty()) return;
// 移除栈顶数据
// 方式一
// 数组方法,pop移除
// this.data.pop();
// retur this.data;
// 方式二
// 计数方式
const temp = this.data[this.count - 1];
delete this.data[this.count - 1];
this.count--;
return temp;
}
// 检测栈是否为空
isEmpty () {
return this.count === 0
}
// top 用于获取栈顶值
top () {
if ( this.isEmpty()) return;
return this.data[this.count - 1]
}
// size 获取栈的数据个数
size () {
return this.count;
}
// clear 用于清空栈数据
clear () {
this.data = [];
this.count = 0;
}
}
获取最小值的栈
https://leetcode-cn.com/problems/min-stack/submissions/