【力扣 Hot100 | 第四天】4.15(括号生成)

在这里插入图片描述

文章目录

  • 4.括号生成
    • 4.1题目
    • 4.2解法:回溯
      • 4.2.1回溯思路
        • (1)函数返回值以及参数
        • (2)终止条件
        • (3)遍历过程
      • 4.2.2代码

4.括号生成

4.1题目

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

  • 示例一:
输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]
  • 示例二:
输入:n = 1
输出:["()"]

4.2解法:回溯

  • 此解法当n>=8时,超出时间限制

4.2.1回溯思路

(1)函数返回值以及参数
private void backing(int startIndex,int n)
(2)终止条件
if(sb.length() == 2*n){
    //判断当前路径是否为有效括号
    if(isValid(sb)){
    	res.add(new String(sb.toString()));
    }
    return;
}
(3)遍历过程
for(int i=startIndex;i<2*n;i++){
	sb.append('(');
    backing(i+1,n);
     
    sb.deleteCharAt(sb.length()-1);

    if(i!=0){
		sb.append(')');
        backing(i+1,n);
		sb.deleteCharAt(sb.length()-1);
    }
}
  • 验证是否为回文串方法
	public boolean isValid(StringBuffer sb){

        Deque<Character> deque=new LinkedList<>();
        for(int i=0;i<sb.length() ;i++){
            if(sb.charAt(i)=='('){
                //左括号
                deque.push('(');
            }else if( !deque.isEmpty() && deque.peek()=='(' ){
                deque.pop();
            }else{
                return false;
            }
        }
        return deque.isEmpty();
    }

4.2.2代码

	List<String> res=new ArrayList<>();
    StringBuffer sb=new StringBuffer();

    public List<String> generateParenthesis(int n) {
        backing(0,n);
        return res;
    }

    private void backing(int startIndex,int n){
        if(sb.length() == 2*n){
            //判断当前路径是否为有效括号
            if(isValid(sb)){
                res.add(new String(sb.toString()));
            }
            return;
        }

        for(int i=startIndex;i<2*n;i++){
            sb.append('(');
            backing(i+1,n);
            sb.deleteCharAt(sb.length()-1);

            if(i!=0){
                sb.append(')');
                backing(i+1,n);
                sb.deleteCharAt(sb.length()-1);
            }
        }
    }

    public boolean isValid(StringBuffer sb){

        Deque<Character> deque=new LinkedList<>();
        for(int i=0;i<sb.length() ;i++){
            if(sb.charAt(i)=='('){
                //左括号
                deque.push('(');
            }else if( !deque.isEmpty() && deque.peek()=='(' ){
                deque.pop();
            }else{
                return false;
            }
        }
        return deque.isEmpty();
    }

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/548451.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机笔记(11)续20个

180&#xff0e;时钟频率2.0GHz表示一秒有2*10的9次方个时钟周期&#xff0c;若执行一条指令需要2个时钟周期&#xff0c;则每秒执行的指令数为2*10的9次方/21*10的9次方 181.同轴电缆粗缆采用AUI头作为连接器件 182. 183.win7中的回收站&#xff0c;存放的是硬盘上被删除的…

C语言:文件操作(三)

目录 前言 5、文章的随机读写 5.1 fseek 5.2 ftell 5.3 rewind 结语 前言 本篇文章继续讲解文件操作&#xff0c;讲解文件的随机读写&#xff0c;主要有三个函数&#xff1a;fseek&#xff1b;ftell&#xff1b;rewind。 前面讲解的函数都是对文件内容进行顺序读写&#x…

MySQL 8.0.19安装教程(windows 64位)

在c盘目录下的Program Files目录下创建MySQL目录&#xff0c;将下载好的mysql解压到里面 解压完是这个样子 配置初始化的my.ini文件的文件 [mysqld] # 设置3306端口 port3306 # 设置mysql的安装目录 basedirC:\Program Files\MySQL # 设置mysql数据库的数据的存放目录 datad…

Trl SFT: llama2-7b-hf使用QLora 4bit量化后ds zero3加上flash atten v2单机多卡训练(笔记)

目录 一、环境 1.1、环境安装 1.2、安装flash atten 二、代码 2.1、bash脚本 2.2、utils.py 注释与优化 2.3、train.py 注释与优化 2.4、模型/参数相关 2.4.1、量化后的模型 2.4.1.1 量化后模型结构 2.4.1.2 量化后模型layers 2.4.2、参数 2.4.2.1 training args 2.4.2.2 pe…

【随笔】Git 基础篇 -- 拉取数据 git pull(二十八)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

GPT的使用

个人笔记&#xff08;整理不易&#xff0c;有帮助点个赞&#xff09; 笔记目录&#xff1a;学习笔记目录_pytest和unittest、airtest_weixin_42717928的博客-CSDN博客 个人随笔&#xff1a;工作总结随笔_8、以前工作中都接触过哪些类型的测试文档-CSDN博客 网站sms-activate.or…

详解电源测试系统自定义报告模板功能:如何轻松实现数据导出

在NSAT-8000电源测试系统内&#xff0c;数据一般分为三级架构&#xff1a;原始数据、数据报告和数据分析。数据报告可以直接展示出电源模块的各项测试数据和测试结果&#xff0c;帮助用户评估电源性能&#xff0c;为电源的优化提升提供数据支持。 系统的记录报告板块展示着历史…

RocketMQ 10 面试题FAQ

RocketMQ 面试FAQ 说说你们公司线上生产环境用的是什么消息中间件? 为什么要使用MQ&#xff1f; 因为项目比较大&#xff0c;做了分布式系统&#xff0c;所有远程服务调用请求都是同步执行经常出问题&#xff0c;所以引入了mq 解耦 系统耦合度降低&#xff0c;没有强依赖…

DeiT:训练ImageNet仅用4卡不到3天的平民ViT | ICML 2021

论文基于改进训练配置以及一种新颖的蒸馏方式&#xff0c;提出了仅用ImageNet就能训练出来的Transformer网络DeiT。在蒸馏学习时&#xff0c;DeiT以卷积网络作为teacher&#xff0c;能够结合当前主流的数据增强和训练策略来进一步提高性能。从实验结果来看&#xff0c;效果很不…

基于FMC接口的Kintex-7 XC7K325T PCIeX4 3U PXIe接口卡

基于FMC接口的Kintex-7 XC7K325T PCIeX4 3U PXIe接口卡 一、板卡概述 本板卡基于Xilinx公司的FPGAXC7K325T-2FFG900 芯片&#xff0c;pin_to_pin兼容FPGAXC7K410T-2FFG900 &#xff0c;支持PCIeX8、64bit DDR3容量2GByte&#xff0c;HPC的FMC连接器&#xff0c;板卡支持PXI…

html基础——CSS

在HTML中&#xff0c;CSS的作用是用于控制网页的样式&#xff0c;包括字体、颜色、背景、布局等方面的设计。通过一个样例来说明CSS的作用&#xff1a; 如下是一个名为global.css的CSS文件&#xff1a; .C1{font-size: 10px;color: blue;border:1px solid red;height: 200px;…

【Redis 神秘大陆】009 案例实践进阶

九、案例实践&进阶方案 9.1 本地缓存组件选型 使用缓存组件时需要重点关注集群方式、集群、缓存命中率。 需要关注集群组建方式、缓存统计&#xff1b;还需要考虑缓存开发语言对缓存的影响&#xff0c;如对于JAVA开发的缓存需要考虑GC的影响&#xff1b;最后还要特别关注…

vue快速入门(二十六)生命周期钩子函数

注释很详细&#xff0c;直接上代码 上一篇 新增内容 生命周期钩子函数的解析生命周期函数效果演示 源码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevic…

【原创教程】海为PLC与RS-WS-ETH-6传感器的MUDBUS_TCP通讯

一、关于RS-WS-ETH-6传感器的准备工作 要完成MODBUS_TCP通讯,我们必须要知道设备的IP地址如何分配,只有PLC和设备的IP在同一网段上,才能建立通讯。然后还要选择TCP的工作模式,来建立设备端和PC端的端口号。接下来了解设备的报文格式,方便之后发送报文完成数据交互。 1、…

【Altium Designer 20 笔记】PCB层

Top Overlay & Bottom Overlay (顶部丝印层和底部丝印层)&#xff1a; 用于标记元件、连接和其他重要信息。丝印层是 PCB 表面的一层&#xff0c;上面印上文字、图标或标记。 Top Solder & Bottom Solder (顶部阻焊层和底部阻焊层)&#xff1a; 阻焊层、开窗层、绿油层…

【电控笔记2.3】速度回路+系统延迟

2.3.1速度回路pi控制器设计 pi伯德图近似设计(不考虑延时理想情况下) Tl:负载转矩 PI控制器的转折频率:Ki/Kp

金融数字化能力成熟度指引

1 范围 本文件提出了金融数字化能力成熟度模型、成熟度计算方法&#xff0c;明确了不同维度金融数字化转型能力 相应的分档要求。 本文件适用于金融机构衡量金融科技应用和数字化转型发展水平&#xff0c;检视自身数字化发展优势与短板&#xff0c; 加快数字化转型&#xff0c…

Fatal error in launcher: Unable to create process using【解决方案】

拷贝python 项目到其他电脑以后&#xff0c;执行pip list 命令时报如下错误&#xff1a; Fatal error in launcher: Unable to create process using ‘“d:\python37\python.exe” “C:\Python\Scripts\pip.exe” list’: ??? 解决方法&#xff1a; 先试这条&#xff1a; …

什么是One-Class SVM

1. 简介 单类支持向量机&#xff0c;简称One-Class SVM(One-Class Support Vector Machine)&#xff0c;用于异常检测和离群点检测(无监督学习&#xff0c;其他svm属于有监督的)&#xff0c;可以在没有大量异常样本的情况下有效地检测异常。其目标是通过仅使用正常数据来建模&a…

Gin框架小结

Gin 简介 Gin是一个轻量级的Web框架&#xff0c;用于构建高性能的Go语言Web应用程序。提供了路由管理、中间件支持、参数绑定和验证、错误处理、静态文件服务等功能。 Gin框架解决了什么问题和痛点 1.golang http 标准库本身提供了比较简单的路由注册能力&#xff0c;只支持…