File tree Expand file tree Collapse file tree 2 files changed +86
-0
lines changed Expand file tree Collapse file tree 2 files changed +86
-0
lines changed Original file line number Diff line number Diff line change
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
+ ] ) ;
Original file line number Diff line number Diff line change
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' ) ;
You can’t perform that action at this time.
0 commit comments