Combination Sum IV

来源:互联网 发布:全能数据人生下载 编辑:程序博客网 时间:2024/06/09 18:11

这个最后得用dp来做,自己一开始想到的递归在遇到如[1,2,3],target=32时会超时,因为会有181997601种可能,laptop运行了1小时都还没算完。。。

    public static int combinationSum3(int[] nums, int target) {        int[] array = new int[target + 1];        array[0] = 1;        for (int i = 1; i <= target; i++) {            for (int n: nums) {                if(i >= n)                array[i] = array[i] + array[i - n];            }        }        return array[target];    }    //    static int count = 0;//    public static int combinationSum4(int[] nums, int target) {//        Arrays.sort(nums);//        List<Integer> list = new LinkedList<>();//        helper(nums, target, 0, list);//        return count;//    }//    //    private static void helper(int[] nums, int target, int sum, List<Integer> list) {//        if (sum == target) {//            count++;//            for (int j: list) {//                System.out.print(j);//            }//            System.out.println(":  count: " + count);//            return;//        }//        for (int i = 0; i < nums.length; i++) {//            if (sum + nums[i] > target) {//                return;//            }//            list.add(nums[i]);//            //            helper(nums, target, sum + nums[i], list);//            list.remove(list.size() - 1);//        }//    }


0 0
原创粉丝点击