File tree 1 file changed +49
-0
lines changed
1 file changed +49
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[] } digits
3
+ * @return {number[] }
4
+ */
5
+ const findEvenNumbers = function ( digits ) {
6
+ const set = new Set ( ) , visited = new Set ( )
7
+ helper ( 0 , [ ] )
8
+ const res = Array . from ( set )
9
+ res . sort ( ( a , b ) => a - b )
10
+ return res
11
+
12
+ function helper ( idx , cur ) {
13
+ if ( cur . length === 3 ) {
14
+ set . add ( + cur . join ( '' ) )
15
+ return
16
+ }
17
+ for ( let i = 0 ; i < digits . length ; i ++ ) {
18
+ if ( visited . has ( i ) ) continue
19
+ const d = digits [ i ]
20
+ if ( d === 0 ) {
21
+ if ( cur . length === 0 ) continue
22
+ else {
23
+ cur . push ( d )
24
+ visited . add ( i )
25
+ helper ( i + 1 , cur )
26
+ visited . delete ( i )
27
+ cur . pop ( )
28
+ }
29
+ } else {
30
+ const isEven = d % 2 === 0
31
+ if ( cur . length === 3 - 1 ) {
32
+ if ( isEven ) {
33
+ cur . push ( d )
34
+ visited . add ( i )
35
+ helper ( i + 1 , cur )
36
+ visited . delete ( i )
37
+ cur . pop ( )
38
+ } else continue
39
+ } else {
40
+ cur . push ( d )
41
+ visited . add ( i )
42
+ helper ( i + 1 , cur )
43
+ visited . delete ( i )
44
+ cur . pop ( )
45
+ }
46
+ }
47
+ }
48
+ }
49
+ } ;
You can’t perform that action at this time.
0 commit comments