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

【回溯】Leetcode 22. 括号生成【中等】

括号生成

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

示例 1:

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

解题思路

  • 1、使用回溯算法来生成所有有效的括号组合。
  • 2、对于每个位置,可以选择放置左括号或右括号。
  • 3、放置左括号的条件是左括号的数量小于n,放置右括号的条件是右括号的数量小于左括号的数量
  • 4、使用递归回溯的方法,尝试放置每个括号,并继续向下搜索。

java实现

public class GenerateParentheses {public List<String> generateParenthesis(int n) {List<String> result = new ArrayList<>();backtrack(n, 0, 0, "", result);return result;}private void backtrack(int n, int left, int right, String combination, List<String> result) {if (left == n && right == n) {result.add(combination);return;}//左括号的数量小于nif (left < n) {backtrack(n, left + 1, right, combination + "(", result);}//右括号的数量小于左括号的数量if (right < left) {backtrack(n, left, right + 1, combination + ")", result);}}public static void main(String[] args) {GenerateParentheses solution = new GenerateParentheses();int n = 3;List<String> combinations = solution.generateParenthesis(n);System.out.println("All possible combinations of valid parentheses:");for (String combination : combinations) {System.out.println(combination);}}
}

时间空间复杂度

  • 时间复杂度:由于回溯算法的性质,最坏情况下时间复杂度为O(2 ^
    2n ⋅n)即 O(4^n / √n),其中n是括号对数。

  • 空间复杂度:O(n),递归调用栈的深度为括号对数n。

http://www.lryc.cn/news/339740.html

相关文章:

  • Java生成带数字的图片
  • FreeSWITCH 1.10.10 简单图形化界面17 - ubuntu22.04或者debian12 安装FreeSWITCH(IamFree)
  • 【数据结构】06图
  • Flink作业 taskmanager.numberOfTaskSlots 这个参数有哪几种设置方式
  • 京东详情比价接口优惠券(2)
  • Python knn算法
  • [大模型]Langchain-Chatchat安装和使用
  • K8S之资源管理
  • Grok-1.5 Vision:X AI发布突破性的多模态AI模型,超越GPT 4V
  • 【御控物联】Java JSON结构转换(1):对象To对象——键值互换
  • 【学习笔记】rt-thread
  • 一文掌握 React 开发中的 JavaScript 基础知识
  • 读天才与算法:人脑与AI的数学思维笔记01_洛夫莱斯测试
  • 嵌入式系统的时间保存问题,hwclock保存注意事项
  • jenkins(docker)安装及应用
  • uni-app中,页面跳转前,进行拦截处理的方法
  • Jmeter参数化的 4 种方式用法总结
  • 华为OD机试 - 连续天数的最高利润额(Java 2024 C卷 100分)
  • C语言——内存函数的实现和模拟实现
  • 如何优化邮箱Webhook API发送邮件的性能?
  • OceanBase V4.X中常用的SQL(一)
  • 代码随想录算法训练营第五十天|123.买卖股票的最佳时机III 188.买卖股票的最佳时机IV
  • Composer安装与配置:简化PHP依赖管理的利器(包括加速镜像设置)
  • 灯塔:抽象类和接口笔记
  • mybatis 入门
  • Spring-AI-上下文记忆
  • 内存函数memcpy、mommove、memset、memcmp
  • symfony框架介绍
  • 【计算机毕业设计】游戏售卖网站——后附源码
  • LabVIEW电信号傅里叶分解合成实验