20220409,21min,相隔1个月
|
```javascript
/**
- @param {number} n
- @return {string[]}
*/
// 08:48 -> 09:09
var generateParenthesis = function(n) {
let set = new Set([‘()’])
for (let i = 2; i <= n; i++) {
} return […set]; }; ``` | | —- |let itemSet = new Set();
for (let item of set) {
for (let j = 0; j < item.length; j++) {
// itemSet.add([item.slice(0, j) + '()' + item.slice(j)]) // bug:会导致结果比预期的少,因为item.length每次只有1,比字符串的length少
itemSet.add(item.slice(0, j) + '()' + item.slice(j))
}
}
set = itemSet
20220406,11min
| 20220406```javascript /**
- @param {number} n
- @return {string[]}
*/
// 09:05 -> 09:16
var generateParenthesis = function(n) {
let set = new Set([‘()’]);
for (let i = 2; i <= n; i++) {
let nextSet = new Set();
for (let s of set) {
for (let j = 0; j <= s.length; j++) {
} } set = nextSet; } return […set]; }; ``` 执行用时:68 ms, 在所有 JavaScript 提交中击败了46.69%的用户// nextSet.add(s.slice(0, j) + '()', s.slice(j, s.length)); // bug: + 写成,了
nextSet.add(s.slice(0, j) + '()' + s.slice(j, s.length));
内存消耗:42.7 MB, 在所有 JavaScript 提交中击败了19.70%的用户
通过测试用例:8 / 8 | | —- |
20220405,11min
| 20220405```javascript /**
- @param {number} n
- @return {string[]}
*/
// 09:48 -> 09:59
// n-1 -> n
var generateParenthesis = function(n) {
let set = new Set([‘()’]); // 1对
for (let i = 2; i <= n; i++) {
let nextSet = new Set();
for (str of set) {
for (let j = 0; j <= str.length; j++) {
} } set = nextSet } return […set]; }; ``` | | —- |nextSet.add(str.slice(0, j) + '()' + str.slice(j, str.length));
20220403,不通过
| 20220403```javascript /**
- @param {number} n
- @return {string[]}
/
// 15:02 -> 15:20
// 知道n-1的情况时,就会知道n的情况
// 在n-1的每个空隙都插入一个(),再去重,就是n时的()数
var generateParenthesis = function(n) {
// let set = new Set([‘()’]); // bug => 其实是写对的,不是bug
// let set = new Set(‘()’); // bug
let set = new Set([‘()’])
// for (let i = 0; i < n; i++) { // bug:
for (let i = 2; i <= n; i++) {
// let nextSet = new Set([]); // Set()就行,不用Set([])
let nextSet = new Set();
// for (let j = 0; j < set.length; j++) { // bug
for (let j = 0; j <= set.length; j++) { // bug
// nextSet.add(set.slice(0, j) + ‘()’ + set.slice(j)); // bug:是set[j].slice(),当前字符串,而不是set.slice()
nextSet.add(set[j].slice(0, j) + ‘()’ + set[j].slice(j));
}
set = nextSet
}
// return nextSet; // bug:nextSet is not defined;
// return set; // bug:未完成从集合set到数组array的转换
return […set];
}
```
不通过
*知识点:
- set使用不熟练. new Set(), new Set([‘()’])
- 实际上需要3层循环,而我只写了2层
- 2 -> n的循环,
- set内部循环出每个有效的项,
- 循环出每项每个位置插入
- n为1是’()’,所以循环从i = 2开始。一直循环到i = n,返回[…set]
| | —- |
20220402,不知道思路
| 20220402```javascript /**
- @param {number} n
- @return {string[]} */ // 22:12 -> 22:21, // 如果知道了n-1的情况,就知道n的情况 // n-1的基础上的()的每个空隙都插入一个括号 // 第1个的时候是(),第2个就是()(), (()), ()(),然后去重
var generateParenthesis = function(n) {
}; ``` 思路有,算法不知道该怎么写,不知道该怎么把括号插入到第一个去。 | | —- |