Skip to content

Commit 9510a53

Browse files
committedAug 23, 2020
LeetCode 669
1 parent d0bdeff commit 9510a53

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
class Solution {
2+
public boolean judgePoint24(int[] nums) {
3+
return dfs(Arrays.stream(nums).boxed().map(Double::new).collect(Collectors.toList()));
4+
}
5+
6+
private boolean dfs(List<Double> numList) {
7+
if (numList.size() == 0) {
8+
return false;
9+
}
10+
if (numList.size() == 1) {
11+
return Math.abs(Math.abs(numList.get(0) - 24.0)) < 0.000001d;
12+
}
13+
for (int i = 0; i < numList.size(); i++) {
14+
for (int j = i + 1; j < numList.size(); j++) {
15+
boolean valid = dfs(getList(numList, i, j, 0)) || dfs(getList(numList, i, j, 1))
16+
|| dfs(getList(numList, i, j, 2)) || dfs(getList(numList, i, j, 3))
17+
|| dfs(getList(numList, i, j, 4)) || dfs(getList(numList, i, j, 5));
18+
if (valid) {
19+
return true;
20+
}
21+
}
22+
}
23+
return false;
24+
}
25+
26+
private List<Double> getList(List<Double> numList, int i, int j, int operate) {
27+
List<Double> candidate = new ArrayList<>();
28+
for (int k = 0; k < numList.size(); k++) {
29+
if (k == i || k == j) {
30+
continue;
31+
}
32+
candidate.add(numList.get(k));
33+
}
34+
35+
switch (operate) {
36+
// a + b
37+
case 0:
38+
candidate.add(numList.get(i) + numList.get(j));
39+
break;
40+
// a - b
41+
case 1:
42+
candidate.add(numList.get(i) - numList.get(j));
43+
break;
44+
// b - a
45+
case 2:
46+
candidate.add(numList.get(j) - numList.get(i));
47+
break;
48+
// a * b
49+
case 3:
50+
candidate.add(numList.get(i) * numList.get(j));
51+
break;
52+
// a / b
53+
case 4:
54+
if (numList.get(j) == 0) {
55+
return Collections.emptyList();
56+
}
57+
candidate.add(numList.get(i) / numList.get(j));
58+
break;
59+
// b / a
60+
case 5:
61+
if (numList.get(i) == 0) {
62+
return Collections.emptyList();
63+
}
64+
candidate.add(numList.get(j) / numList.get(i));
65+
break;
66+
}
67+
return candidate;
68+
}
69+
}

0 commit comments

Comments
 (0)