算法练习day1-备战2027届秋招

1、有效的括号

javascript 复制代码
function isValid(s) {
  // 栈
  const stack = []
  const map = {
    ')': '(',
    ']': '[',
    '}': '{',
  }
  for (let char of s) {
    // 匹配右括号
    if (map[char]) {
      // 栈空或者栈顶不匹配
      if (stack.length === 0 || stack.pop() !== map[char]) {
        return false
      }
    } else {
      stack.push(char)
    }
  }
  return stack.length === 0
}
console.log(isValid('{()()[]}'))

2、合并数组区间

javascript 复制代码
function merge(arr) {
  // 数组为空
  // if(arr.length === 0) return []
  arr.sort((a, b) => a[0] - b[0])
  let res = [arr[0]]
  for (let i = 1; i < arr.length; i++) {
    const last = res[res.length - 1]
    const curr = arr[i]
    if (curr[0] < last[1]) {
      // 合并重叠
      last[1] = Math.max(curr[1], last[1])
    } else {
      res.push(curr)
    }
  }
  return res
}
console.log(
  merge([
    [1, 7],
    [2, 6],
    [8, 15],
  ]),
)

3、无重复最长字符串长度

javascript 复制代码
function longlength(str) {
  // 滑动窗口,双指针
  let left = 0
  let maxLen = 0
  const set = new Set()
  for (let right = 0; right < str.length; right++) {
    while (set.has(str[right])) {
      set.delete(str[left])
      left++
    }
    set.add(str[right])
    maxLen = Math.max(maxLen, right - left + 1)
  }
  return maxLen
}

console.log(longlength('abcab'))
相关推荐
wzdark5 小时前
基于堆的优先队列实现原理与复杂度分析4
算法
彧azz7 小时前
图的存储结构详解:邻接矩阵的原理、实现与应用
开发语言·数据结构·学习·php
老王熬夜敲代码7 小时前
BLAKE3:最快的密码学哈希函数
算法·密码学·哈希算法
hansang_IR7 小时前
【题解】P4460 [CQOI2018] 解锁屏幕
c++·算法
见闻小天地8 小时前
简博斯JG-C系列彩色激光同轴位移计:摄像头模组对位与行程测量的技术价值观察
人工智能·算法
CharlesYu018 小时前
前端性能优化的第一性原理,是不断缩短“用户发起意图 → 获得可用结果”之间的时间
前端
葫三生8 小时前
《论三生原理》神话学构想与“神话历史”理论、《古史中的神话》思路异同?
大数据·人工智能·科技·深度学习·算法
平头哥技术团队9 小时前
Day 21 _ 页内锚点_给每段起个 id,目录写 href=_#id_,点一下页面就滚到那一段
前端·html·html5
liliangcsdn9 小时前
因子分析指标概念与示例
算法·机器学习
SupL!10 小时前
LoftQ原理
算法