final double epsilon = 0.0001;
public boolean judgePoint24(int[] nums) {
if (nums == null || nums.length < 4) {
List<Double> list = new ArrayList();
public boolean getPoint24(List<Double> nums) {
if (Math.abs(nums.get(0) - 24) < epsilon) {
for (int i = 1; i < nums.size(); i++) {
for (int j = 0; j < i; j++) {
double num1 = nums.get(i);
double num2 = nums.get(j);
if (num1 == 0 || num2 == 0) {
// i is greater than j, so removing element at i won't effect the position of nums.get(j)
for (double nextNum : compute(num1, num2)) {
nums.remove(nums.size() - 1);
public double[] compute(double num1, double num2) {
return new double[] {num1 + num2, num1 - num2, num2 - num1, num1 * num2, num1 / num2, num2 / num1};