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

相关推荐
不好听6131 小时前
从一行 JSX 到屏幕像素:前端开发者必须懂的浏览器渲染管线
前端
恒拓高科WorkPlus1 小时前
企业级内网即时通讯建设模型:BeeWorks内网IM四层架构
前端
前端小李子2 小时前
前端环境变量裸奔?我用 EnvShield 给它穿了件防弹衣
前端
youtootech2 小时前
HarmonyOS《柚兔学伴》项目实战25-我的页面、Web 嵌入与项目总结
前端·华为·harmonyos
小林ixn2 小时前
从零到一理解 React 父子组件通信:手写一个 Todo 应用带你彻底搞懂单向数据流
前端·javascript·react.js
醇氧4 小时前
CountDownLatch / CyclicBarrier / Semaphore 面试高频问答清单
前端·面试·职场和发展
a1117764 小时前
2FA 验证码生成器(github登录验证 app)
笔记·学习
我的xiaodoujiao5 小时前
API 接口自动化测试详细图文教程学习系列32--Allure测试报告2
python·学习·测试工具·pytest
qetfw5 小时前
MXU:Tauri 2 + React 的 MaaFramework 跨平台 GUI 源码
前端·python·react.js·前端框架·开源项目·效率工具