算法练习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'))
相关推荐
liangshanbo12155 分钟前
Monorepo 工程化面试题:如何设计 Web + Node.js 中间层 + Shared + Scripts 的 Monorepo?
前端·node.js
我就是不信7 分钟前
C语言排序问题详解:从冒泡到快排的完整指南
c语言·算法·排序算法
IT_陈寒7 分钟前
Redis集群切换主节点时,服务竟然全员掉线
前端·人工智能·后端
wangbing112513 分钟前
开发指南147-WebSocket-前端
前端·websocket·网络协议
l1t14 分钟前
DeepSeek总结的PIVCO-Huffman编码性能优化
数据结构·c++·算法
吴声子夜歌14 分钟前
Nginx应用与运维——Nginx Web服务应用实战(伪流媒体服务器的搭建)
运维·前端·nginx
-dzk-24 分钟前
【贪心算法】LC 763.划分字母区间
算法·贪心算法
拾饵94230 分钟前
第六周第二节那个RAG工业项目遇到的问题
算法
铅笔小新z33 分钟前
【stm32】理解弱引用
javascript·stm32·嵌入式硬件
ss27339 分钟前
AI全栈实战 | 2.4-01 Node 与前端工程化:前端为什么离不开 Node,它不只是构建工具的宿主
前端