22.括号生成
我的解法
第一时间想到的是17题,因此用的回溯算法。
终止条件是leftcnt=rightcnt=n,即左右括号都有n个。中间需要判断一下用左括号还是右括号,只能追加左括号的情况是leftcnt=rightcnt,只能追加右括号的情况是leftcnt=n,其余情况两个都可以追加。
官方解法
法一:暴力解法,生成所有长度为22n的字符串,再判断这一字符串是否符合括号匹配的条件,在n的大小很小时这也是不错的方法。
法二:回溯,官方题解里优化了一下追加符号的判断,不是使用连续的if-else,而是多个if并列,如果当前情况满足终止条件,则进行return;如果不满足,那么会匹配其余的两个if,满足条件就进行回溯。这样对左括号的判断条件是leftcnt<n,对右括号的判断条件是rightcnt<leftcnt,判断条件比较统一,也更易于理解。
法三:按括号序列的长度递归,有点晕没看懂,复习时再看一下?lc官方题解
知识点
回溯;递归

浙公网安备 33010602011771号