ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

LeetCode每日一练【22】

2022-05-04 15:32:09  阅读:186  来源: 互联网

标签:right curr 22 res 每日 dfs 括号 LeetCode left


Generate Parentheses

我的代码

介绍

不是我写的, 我可写不出来, 看懂都费劲!

思路

  1. 递归运算, 内嵌函数
  2. 创建两个指针: left(左括号数量), right(右括号数量), curr(临时存储的字符串)
  3. 首先判断 left === n && right === n, 如果都等于的话, 证明结果符合条件, 将curr入组, 返回上一层即可
  4. 如果不全等于的话, 先判断left < n ?, 因为右括号必定在左括号前面, 如果为true, 继续将(加到curr中, 继续执行下一层递归
  5. 再判断right < left ?, 因为左括号必定在left之后, 且数量必须小于当前的右括号, 如果为true, 继续将)加到curr中, 继续执行下一层递归.
  6. 调用内嵌函数: dfs(0, 0, '')
  7. 返回最终结果res

代码

/*
 * @Author: fox
 * @Date: 2022-05-03 14:04:03
 * @LastEditors: fox
 * @LastEditTime: 2022-05-04 15:08:44
 * @Description: https://leetcode.com/problems/generate-parentheses/
 */

/**
 * @description: Runtime: 96.06%  Memory Usage: 90.06%
 * @param {number} n
 * @return {string[]}
 */
const generateParenthesis = (n) => {
    const res = [];
    const dfs = (left, right, curr) => {
        if (left === n && right === n) { // 如果 ( 和 ) 都全部入栈 直接返回结果
            res.push(curr);
            return;
        }

        if (left < n) {
            console.log('left < n: curr: ', `${curr}(`);
            dfs(left + 1, right, `${curr}(`);
        }

        if (right < left) {
            console.log('right < left: curr: ', `${curr})`);
            dfs(left, right + 1, `${curr})`);
        }
    }

    dfs(0, 0, ''); // 执行内嵌函数
    return res;
};

let n = 3;
console.log(generateParenthesis(n)) // ["((()))","(()())","(())()","()(())","()()()"]

n = 1
console.log(generateParenthesis(n)) // ['()']

标签:right,curr,22,res,每日,dfs,括号,LeetCode,left
来源: https://www.cnblogs.com/mapodoufu/p/16221262.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有