Title: 22.括号生成 · Issue #2 · feikerwu/algorithm-camp · GitHub
Open Graph Title: 22.括号生成 · Issue #2 · feikerwu/algorithm-camp
X Title: 22.括号生成 · Issue #2 · feikerwu/algorithm-camp
Description: 原题地址 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出 n = 3,生成结果为: [ "((()))", "(()())", "(())()", "()(())", "()()()" ] 解法 动态规划 n对合法括号可以通过以下形式构造 f(n) = '(' + f(p) + ')' + f(q) /** * @param {number} n * @return {string[]} */ var genera...
Open Graph Description: 原题地址 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出 n = 3,生成结果为: [ "((()))", "(()())", "(())()", "()(())", "()()()" ] 解法 动态规划 n对合法括号可以通过以下形式构造 f(n) = '(' + f(p) + ')' + f(q) /** * @param {numb...
X Description: 原题地址 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出 n = 3,生成结果为: [ "((()))", "(()())", "(())()", "()(())", "()()()" ] 解法 动态规划 n对合法括号可以通过以下形式构造...
Opengraph URL: https://github.com/feikerwu/algorithm-camp/issues/2
X: @github
Domain: patch-diff.githubusercontent.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"22.括号生成","articleBody":"[原题地址](https://leetcode-cn.com/problems/generate-parentheses/)\r\n\r\n给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。\r\n例如,给出 n = 3,生成结果为:\r\n```\r\n[\r\n \"((()))\",\r\n \"(()())\",\r\n \"(())()\",\r\n \"()(())\",\r\n \"()()()\"\r\n]\r\n```\r\n\r\n### 解法\r\n#### 动态规划\r\nn对合法括号可以通过以下形式构造\r\nf(n) = '(' + f(p) + ')' + f(q)\r\n\r\n``` js\r\n/**\r\n * @param {number} n\r\n * @return {string[]}\r\n */\r\nvar generateParenthesis = function(n) {\r\n let map = new Array(n + 1).map(item =\u003e [])\r\n map[0] = [''];\r\n map[1] = ['()'];\r\n for (let i = 2; i \u003c= n; i++) {\r\n let cur = []\r\n for (let j = 0; j \u003c i; j++) {\r\n let left = map[j]\r\n let right = map[i - 1 - j \u003e 0 ? i - 1 - j : 0]\r\n for (let k = 0; k \u003c left.length; k++) {\r\n for (let m = 0; m \u003c right.length; m++) {\r\n cur.push(`(${left[k]})${right[m]}`)\r\n }\r\n }\r\n }\r\n map[i] = cur;\r\n }\r\n\r\n return map[n]\r\n};\r\n```\r\n\r\n#### 深搜回溯\r\n\r\n要去构造一个合法括号序列,只需要保证\r\n1. left大于等于right\r\n2. 当left === right时,下一个括号必须是左括号\r\n其中left是左括号数量,right是右括号数量\r\n\r\n```js\r\n// @lc code=start\r\n/**\r\n * @param {number} n\r\n * @return {string[]}\r\n */\r\nvar generateParenthesis = function(n) {\r\n let res = []\r\n solve(0, 0, '');\r\n return res;\r\n\r\n function solve(left, right, cur) {\r\n if (left === n \u0026\u0026 right === n) {\r\n res.push(cur)\r\n return\r\n }\r\n\r\n if (left \u003e= right) {\r\n if (left \u003e right) {\r\n left \u003c n \u0026\u0026 solve(left + 1, right, cur + '(')\r\n right \u003c n \u0026\u0026 solve(left, right + 1, cur + ')')\r\n } else {\r\n left \u003c n \u0026\u0026 solve(left + 1, right, cur + '(')\r\n }\r\n }\r\n }\r\n};\r\n```\r\n\r\n\r\n\r\n\r\n\r\n\r\n","author":{"url":"https://github.com/feikerwu","@type":"Person","name":"feikerwu"},"datePublished":"2020-02-26T07:44:50.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/2/algorithm-camp/issues/2"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:2b28f977-212c-3212-5b37-72b5ff3d3dd5 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | AA30:10305:9424AE:C5FF16:69795772 |
| html-safe-nonce | 9790a83c656d6d02ca68dde7b92756de1e679d8072703091a520ea611787cc3d |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBQTMwOjEwMzA1Ojk0MjRBRTpDNUZGMTY6Njk3OTU3NzIiLCJ2aXNpdG9yX2lkIjoiNzg5NTE4NjQzMDYzNDg0MTk3MCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 72588991d877618003805d1b519ce32dcbe20b1dd00a83cf76040c1f2e698f5e |
| hovercard-subject-tag | issue:571130091 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/feikerwu/algorithm-camp/2/issue_layout |
| twitter:image | https://opengraph.githubassets.com/a14cd25d6c823488224d5375471d6acfa383fa946b289a095f6409a9e5868caa/feikerwu/algorithm-camp/issues/2 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/a14cd25d6c823488224d5375471d6acfa383fa946b289a095f6409a9e5868caa/feikerwu/algorithm-camp/issues/2 |
| og:image:alt | 原题地址 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出 n = 3,生成结果为: [ "((()))", "(()())", "(())()", "()(())", "()()()" ] 解法 动态规划 n对合法括号可以通过以下形式构造 f(n) = '(' + f(p) + ')' + f(q) /** * @param {numb... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | feikerwu |
| hostname | github.com |
| expected-hostname | github.com |
| None | 1f37d980f1b4aca279ebfb66c14d7813792118b07615b2dc3224c6555f933a37 |
| turbo-cache-control | no-preview |
| go-import | github.com/feikerwu/algorithm-camp git https://github.com/feikerwu/algorithm-camp.git |
| octolytics-dimension-user_id | 39146693 |
| octolytics-dimension-user_login | feikerwu |
| octolytics-dimension-repository_id | 242958294 |
| octolytics-dimension-repository_nwo | feikerwu/algorithm-camp |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 242958294 |
| octolytics-dimension-repository_network_root_nwo | feikerwu/algorithm-camp |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 13aeacf8f907ad2c64257f6161f63d056b619a31 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width