【每天学习一点算法 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)

相关推荐
子兮曰3 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰3 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
一隅论数智3 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
XiHongShi20163 天前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
前端小万3 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝3 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋3 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
爱吃苹果的日记本3 天前
离散数学第六课
学习·离散数学
卡布鲁3 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js