本文会总结leetcode中一些高频的有关栈和队列数据结构的题目。
概念
栈(Stack):是限定只能在表的一端进行插入和删除操作的线性表。栈是先进后出(First In Last Out )FILO。
队列(Queue):是限定只能在表的一端进行插入和在另一端进行删除操作的线性表。队列是先进先出(First In First Out)FIFO。
相关题目
难度:简单
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function(s) {
const stack = [];
const map = new Map();
map.set('(', ')');
map.set('[', ']');
map.set('{', '}');
for (let i = 0; i < s.length; i++) {
const c = s[i];
if (map.has(c)) {
stack.push(c);
} else {
if (
c === ')' && stack[stack.length - 1] === '(' ||
c === ']' && stack[stack.length - 1] === '[' ||
c === '}' && stack[stack.length - 1] === '{'
) {
stack.pop();
} else {
return false;
}
}
}
return stack.length === 0 ? true : false;
};
- 知识点:栈 + 字符串
- 知识点:栈 + 设计
- 知识点:栈 + 设计
- 知识点:栈 + 设计
- 知识点:栈
- 知识点:栈 + 设计
- 知识点:栈
- 知识点:栈
难度:中等
- 知识点:栈
- 知识点:栈 + 哈希表
- 知识点:栈 + 深度优先搜索
- 知识点:栈 + 贪心算法
- 知识点:栈
- 知识点:栈 + 数学
- 知识点:栈 + 贪心算法 + 字符串
- 知识点:栈 + 设计
- 知识点:栈
- 知识点:栈
- 知识点:栈
难度:困难
- 知识点:栈 + 数组 + 双指针 + 动态规划
- 知识点:栈 + 数学
- 知识点:栈 + 数组
- 知识点:栈 + 数组 + 哈希表 + 动态规划
- 知识点:队列 + 滑动窗口
- 知识点:队列 + 二分查找
-
知识点:队列 + 二分查找 + 动态规划
-
知识点:
总结
栈和队列是比较基础的数据结构,但是想要用好还要多多练习。