Java arrays only - no lists, faster than 85%
```\nclass Solution {\n    public boolean judgePoint24(int[] nums) {\n        double[] d = new double[nums.length];\n        for (int i=0; i 23.9999999999999 &&
```\nclass Solution {\n    public boolean judgePoint24(int[] nums) {\n        double[] d = new double[nums.length];\n        for (int i=0; i<nums.length; i++) {\n            d[i] = nums[i];\n        }\n        return check(d);\n    }\n    \n    private boolean check(double[] nums) {\n        if (nums.length == 1) {\n            return nums[0] > 23.9999999999999 && nums[0] < 24.0000000000001;\n        }\n        for (int i=0; i<nums.length; i++) {\n            for (int j=0; j<nums.length; j++) {\n                if (i==j) continue;\n                double a = nums[i];\n                double b = nums[j];\n                if (check(copy(nums, i, j, a*b)) \n                    || check(copy(nums, i, j, a/b))\n                    || check(copy(nums, i, j, a+b))\n                    || check(copy(nums, i, j, a-b))) {\n                    return true;\n                }\n            }\n        }\n        return false;\n    }\n    \n    private double[] copy(double[] nums, int skip1, int skip2, double newNum) {\n        double[] copy = new double[nums.length-1];\n        for (int i=0, j=0; i<nums.length; i++) {\n            if (i==skip1 || i==skip2) continue;\n            copy[j++] = nums[i];\n        }\n        copy[copy.length-1] = newNum;\n        return copy;\n    }\n}
[]