Stack、Queue

  1. Stack - 后进先出 First In First Out (FIFO) • Array or Linked List

  2. Queue - 先进先出 First In Last Out (FILO) • Array or Linked List

    Common Data Structure operations(通用数据结构操作) 图片来源

实战题目

  1. 第 232 题-用栈实现队列
  2. 第 225 题-用队列实现栈
  3. 第 20 题-有效的括号
// 方法一: 用 replace 替换,替换完后字符长度为 0 , 说明是合法的。 时间复杂度很高
/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function(s) {
  var length;
  do {
    length = s.length;
    s = s
      .replace("()", "")
      .replace("{}", "")
      .replace("[]", "");
  } while (length !== s.length);
  return s.length == 0;
};
// Accepted	64 ms	36.2 MB
// 方法二: 栈 先入先出,键key 左括号入栈, 值value 右括号与栈顶的键 key 比较,
// 如果相等继续循环比较, 如果不相当说明不合法;
/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function(s) {
  var stack = [];
  var paren_map = {
    ")": "(",
    "]": "[",
    "}": "{"

    
  };
  for (let i = 0; i < s.length; i++) {
    if (!paren_map.hasOwnProperty(s[i])) {
      stack.push(s[i]);
    } else if (paren_map[s[i]] != stack.pop()) {
      return false;
    }
  }
  return !stack.length;
};
// Accepted 40 ms	33.7 MB
Last Updated: 11/14/2019, 4:56:09 PM