【每天学习一点算法 2026/03/17】括号生成

每天学习一点算法 2026/03/17

题目:括号生成

数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。

通过观察可以发现两点规律:

  • 左括号总数等于右括号总数
  • 无论从括号字符串哪个地方截取,左括号数量都是大于等于有括号数量的

根据这个规律我们就可以总结出,递归选择括号字符的边界

typescript 复制代码
function generateParenthesis(n: number): string[] {
  if (n < 1) return []
  const res = []
  function helper (str: string, left: number, right: number) {
    // 如果左右括号都用完了,代表括号组合生成完毕
    if (left === 0 && right === 0) {
      res.push(str)
      return
    }
    if (left > 0) {
      // 左括号有剩余的时候才能选择左括号
      helper(str + '(', left - 1, right)
    }
    
    if (right > left) {
      // 右括号数量大于左括号时才能选择右括号
      helper(str + ')', left, right - 1)
    }
  }
  // 初始传入左右括号总数
  helper('', n, n)
  return res
}

题目来源:力扣(LeetCode)

相关推荐
東隅已逝,桑榆非晚9 小时前
算法3.双指针法-快乐数
c++·笔记·学习·算法
li星野10 小时前
Regular and Irregular Nouns — One-Page A4 Notes
学习
摹客10 小时前
【3D设计】界面设计中的3D元素:应用场景+5款工具横评(含Three.js)
前端
Hilaku10 小时前
CORS 到底在保护谁?90% 的前端理解错了跨域的本质
前端·javascript·程序员
华玥作者10 小时前
Vue 3 + TypeScript + uni-app 组件库推荐:hy-app(华玥组件库)
vue.js·typescript·uni-app
wno70410 小时前
node.js中使用jquery
前端·node.js·jquery
阿琳a_10 小时前
b-map-viewer:面向 Vue 3 的地图可视化 SDK,从接入到展示再到交互分析
前端·javascript·vue.js·gis·数据可视化·地图
10年前端老司机10 小时前
Agent 商业化困局:热闹的发布会,冷清的付费客户
前端·后端·agent
钱栈up10 小时前
热榜上手|HyperFrames:写HTML出MP4
前端·html
Sailing11 小时前
🚀🚀【封闭结束8】Agent RAG:从零搭建一个可用知识库
前端·后端·agent