欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 算法解题有感

算法解题有感

2025/3/31 12:43:48 来源:https://blog.csdn.net/Babyfaceqian/article/details/146576214  浏览:    关键词:算法解题有感

记录一下自己第一次在做算法题的时候把解题的思路用注释写出来,一步步推导,然后套用相应的算法实现,并且一次提交成功!!!

回看自己的解题思路,好像看到了Deepseek深度思考的影子,在此,向每天被自己叨扰的Deepseek致敬!!!

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

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

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

/*** @param {number} n* @return {string[]}*/
var generateParenthesis = function (n) {// 思考n和n-1有什么区别,n的话多一对括号,这对括号是否可以放在任意位置,但是要满足有效。// 有效的括号组合指的是左括号和右括号使用栈增减最后刚好等于0的。// 既然这样的话,只要通过不同方式的进栈出栈,就能找出不同的组合。// 以n=2举例,方式一进(,出),进(,出)。方式二进(,进(,出),出),这样就得到了2种方式。// 这样的话问题就转换成了进出方式的组合。n对括号的话必然会进n次,出n次,而且过程中进的次数>=出的次数// 想一下回溯算法,回溯算法可以用来枚举出所有可能性,回溯算法主要是尝试和回退。这里尝试有两种选择,一是进(,二是出),有点类似于二叉树左子树和右子树,可以用path记录当前括号组合,是进还是出用计数器,当进(的时候,计数器+1,当进)的时候计数器-1。// 剪枝的条件是,计数器<0了,不符合有效括号// 记录解的条件是,计数器===0,且path长度===2nfunction loop(type = '(', count = 0, path = [], res = []) {// 剪枝if (count < 0) {// 不符合有效括号组合return;}if (path.length === 2 * n) {// 到达最底端了return;}// 尝试path.push(type);if (type === '(') {count++;} else {count--;}// 记录解if (count === 0 && path.length === 2 * n) {res.push(path.join(''));}loop('(', count, path, res);loop(')', count, path, res);// 回退path.pop();}const res = [];loop('(', 0, [], res)return res;
};

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词