Skip to content

Commit b32e8af

Browse files
committed
leetcode
1 parent 84c48de commit b32e8af

File tree

2 files changed

+86
-0
lines changed

2 files changed

+86
-0
lines changed

generateParenthesis.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
'use strict';
2+
3+
/**
4+
* @param {number} n
5+
* @returns {string[]}
6+
*/
7+
var generateParenthesis = function (n) {
8+
var list = [];
9+
var generate = function (open, close, str) {
10+
if (open > close) return;
11+
if (open == 0 && close == 1) {
12+
list.push(str + ')');
13+
return;
14+
}
15+
if (open > 0) {
16+
generate(open - 1, close, str + '(');
17+
}
18+
if (close > 0) {
19+
generate(open, close - 1, str + ')');
20+
}
21+
22+
};
23+
generate(n - 1, n, '(');
24+
return list;
25+
};
26+
27+
var assert = require('assert');
28+
assert.deepEqual(generateParenthesis(3), [
29+
"((()))",
30+
"(()())",
31+
"(())()",
32+
"()(())",
33+
"()()()"
34+
]);

swapPairs.js

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
'use strict';
2+
3+
/**
4+
* Definition for singly-linked list.
5+
*/
6+
function ListNode(val) {
7+
this.val = val;
8+
this.next = null;
9+
}
10+
11+
/**
12+
* @param {ListNode} head
13+
* @returns {ListNode}
14+
*/
15+
var swapPairs = function (head) {
16+
var ahead = new ListNode(null);
17+
ahead.next = head;
18+
var a = ahead;
19+
var b = head;
20+
var c = b && b.next
21+
if (!b || !c) return head;
22+
// update head
23+
head = c;
24+
25+
while (true) {
26+
b.next = c.next;
27+
a.next = c;
28+
c.next = b;
29+
// update a, b, and c
30+
a = b;
31+
b = b.next;
32+
c = b && b.next;
33+
if (!b || !c) break;
34+
}
35+
return head;
36+
};
37+
38+
var assert = require('assert');
39+
40+
var a = new ListNode('a');
41+
var b = new ListNode('b');
42+
var c = new ListNode('c');
43+
var d = new ListNode('d');
44+
a.next = b;
45+
b.next = c;
46+
c.next = d;
47+
var list = swapPairs(a);
48+
console.log(list.next.val);
49+
assert(list.val === 'b');
50+
assert(list.next.val === 'a');
51+
assert(list.next.next.val === 'd');
52+
assert(list.next.next.next.val === 'c');

0 commit comments

Comments
 (0)