算法练习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'))
相关推荐
深蓝AI28 分钟前
Meta 开源用了八年的设计系统 astryx:连坐两天 GitHub 总榜第一,组件库开始写给 agent 的说明书
前端·人工智能
IT_陈寒1 小时前
Vue的watch把我坑惨了,原来要这样用才靠谱
前端·人工智能·后端
1-1=01 小时前
Vue 3 模板语
前端·javascript·vue.js
用户7610304473711 小时前
【转战智能眼镜开发】ROKID AIUI 小游戏 亚马逊标枪项目实战讲解
前端
风卿2 小时前
看着AI写代码太孤独了,来欣赏星云吧:一个DSH 装饰插件
前端·javascript
牧艺2 小时前
弹层不用再手算坐标了:CSS Anchor Positioning 从原理到可上线
前端·javascript·css
用户老李2 小时前
YOLO 目标检测自学教程 07:YOLOv3——多尺度预测
前端
好悬给我拽开线2 小时前
ZILOT 论文解析
算法
moshuying2 小时前
ESP32 墨水屏金价牌(上):从点亮到把图片推过去
前端
李剑一3 小时前
别再抬杠,前端岗已经没了!无论前后端,我们最终都要成“全干”工程师
前端·面试