当前位置: 首页 > java >正文

【LeetCode】22、括号生成

题目:

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

示例 1:

输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]

示例 2:

输入:n = 1
输出:["()"]

提示:

  • 1 <= n <= 8

解题思路:

通过递归构建符合条件的有效括号字符串,并在过程中始终遵守有效括号的规则,最终收集所有符合条件的组合。

代码解释:

result表示结果数组;

current表示当前数组;

total表示总的组合数;

代码:

/*** Note: The returned array must be malloced, assume caller calls free().*/
void backtrack(char** result, int* returnSize, char* current, int open, int close, int n) {if (strlen(current) == 2 * n) {result[*returnSize] = (char*)malloc(sizeof(char) * (2 * n + 1));strcpy(result[*returnSize], current);(*returnSize)++;return;}if (open < n) {current[strlen(current)] = '(';backtrack(result, returnSize, current, open + 1, close, n);current[strlen(current) - 1] = '\0';}if (close < open) {current[strlen(current)] = ')';backtrack(result, returnSize, current, open, close + 1, n);current[strlen(current) - 1] = '\0';}
}
int catalan(int n) 
{long long result = 1;for (int i = 0; i < n; i++) {result = result * 2 * (2 * i + 1) / (i + 2);}return (int)result;
}
char** generateParenthesis(int n, int* returnSize) 
{*returnSize = 0;int total = catalan(n);char** result = (char**)malloc(sizeof(char*) * total);char* current = (char*)calloc(2 * n + 1, sizeof(char));backtrack(result, returnSize, current, 0, 0, n);free(current);return result;
}

http://www.xdnf.cn/news/20033.html

相关文章:

  • 算法之二叉树
  • 【Python基础】 15 Rust 与 Python 基本类型对比笔记
  • C# 修改基类List中某一元素的子类类型
  • 11 月广州见!AUTO TECH China 2025 汽车内外饰展,解锁行业新趋势
  • Leetcode—3516. 找到最近的人【简单】
  • ORA-12547: TNS:lost contact
  • 算法模板(Java版)_字符串、并查集和堆
  • matlab版本粒子群算法(PSO)在路径规划中的应用
  • PDF批量加盖电子骑缝章的方法!高效办公必备
  • 每天学习一点点之湿敏等级以及肖特基二极管
  • C#之LINQ
  • wps的excel如何转为谷歌在线表格
  • testng.xml
  • Opencv: cv::LUT()深入解析图像块快速查表变换
  • sqlserver2008导入excel表数据遇到的问题
  • 无线路由器:从家庭上网到智慧互联的核心设备
  • 人工智能学习:LR和SVM的联系与区别?
  • AI助力软件UI概念设计:卓伊凡收到的客户设计图引发的思考
  • Node.js轻松生成动态二维码
  • C++对象模型的底层逻辑
  • 【数据分享】土地利用矢量shp数据分享-福建
  • 从关键词到语义理解:小陌引擎如何重构AI搜索优化逻辑?
  • Android 12 在 Rockchip 平台上的分区表parametet.txt 自动生成机制解析
  • 【单片机day03】
  • vue3存储/获取本地或会话存储,封装存储工具,结合pina使用存储
  • 电子病历空缺句的语言学特征描述与自动分类探析(以GPT-5为例)(下)
  • LLM重排器落地难题:如何破解速度与精度的工程困局?
  • Claude Code Router实现默认回复中文回复
  • 轻量级的磁盘碎片整理程序-开箱急用快速清理磁盘垃圾和碎片-供大家学习研究参考
  • Redis 客户端与服务器:银行的 “客户服务系统” 全流程