@@ -6,7 +6,7 @@ impl Solution {
6
6
let len = nums. len ( ) ;
7
7
8
8
if len == 1 {
9
- return nums[ 0 ] == 24_f32
9
+ return ( nums[ 0 ] - 24_f32 ) . abs ( ) < 1.0e-6 ;
10
10
}
11
11
12
12
for i in 0 ..len {
@@ -19,7 +19,6 @@ impl Solution {
19
19
}
20
20
}
21
21
22
-
23
22
let mut new_nums_add = new_nums. clone ( ) ;
24
23
new_nums_add. push ( nums[ i] + nums[ j] ) ;
25
24
if helpers ( new_nums_add) {
@@ -33,6 +32,12 @@ impl Solution {
33
32
return true
34
33
}
35
34
35
+ let mut new_nums_res_sub = new_nums. clone ( ) ;
36
+ new_nums_res_sub. push ( nums[ j] - nums[ i] ) ;
37
+ if helpers ( new_nums_res_sub) {
38
+ return true
39
+ }
40
+
36
41
let mut new_nums_mul = new_nums. clone ( ) ;
37
42
new_nums_mul. push ( nums[ i] * nums[ j] ) ;
38
43
if helpers ( new_nums_mul) {
@@ -47,6 +52,13 @@ impl Solution {
47
52
}
48
53
}
49
54
55
+ if nums[ i] != 0_f32 {
56
+ let mut new_nums_res_div = new_nums. clone ( ) ;
57
+ new_nums_res_div. push ( nums[ j] / nums[ i] ) ;
58
+ if helpers ( new_nums_res_div) {
59
+ return true
60
+ }
61
+ }
50
62
51
63
}
52
64
@@ -57,7 +69,6 @@ impl Solution {
57
69
false
58
70
}
59
71
60
-
61
72
helpers (
62
73
nums. into_iter ( )
63
74
. map ( |v| v as f32 )
@@ -78,6 +89,7 @@ mod tests {
78
89
#[ test] fn it_works ( ) {
79
90
80
91
assert ! ( Solution :: judge_point24( vec![ 4 , 1 , 8 , 7 ] ) ) ;
92
+ assert ! ( Solution :: judge_point24( vec![ 3 , 3 , 8 , 8 ] ) ) ;
81
93
assert ! ( Solution :: judge_point24( vec![ 1 , 9 , 1 , 2 ] ) ) ;
82
94
assert_eq ! ( Solution :: judge_point24( vec![ 1 , 2 , 1 , 2 ] ) , false ) ;
83
95
0 commit comments