算法练习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'))
相关推荐
张元清1 小时前
React useInfiniteScroll Hook:无限滚动轻松实现(2026)
javascript·react.js
Bigger1 小时前
因为一句「华流才是最屌的」,我做了一个中国风设计的 Skill
前端·人工智能·设计
别怪我很水1 小时前
Vue element admin 浏览器本地存储 localStorage、useStorage
前端·javascript·vue.js
手揽回忆怎么睡1 小时前
Ubuntu 22.04 64位安装MinIO
linux·前端·ubuntu
铁皮饭盒1 小时前
网页端OCR, 加载6mb大小模型, 又快又准, 百度这次真香
前端·后端
wabs6661 小时前
关于图论【卡码网108.多余的边的思考】
数据结构·算法·图论
Web极客码2 小时前
如何在WordPress中添加动态内容
服务器·前端·wordpress
三克的油2 小时前
数据结构-5
数据结构
云浪2 小时前
给 AI Agent 加上语音交互:ASR + 流式 TTS 实战
前端·人工智能·后端