【LeetCode】377.Combination Sum IV(Medium)解题报告

来源:互联网 发布:mac os用什么语言写的 编辑:程序博客网 时间:2024/05/21 22:34

【LeetCode】377.Combination Sum IV(Medium)解题报告

题目地址:https://leetcode.com/problems/combination-sum-iv/description/
题目描述:

  Given an integer array with all positive numbers and no duplicates, find the number of possible combinations that add up to a positive integer target.

Example:nums = [1, 2, 3]target = 4The possible combination ways are:(1, 1, 1, 1)(1, 1, 2)(1, 2, 1)(1, 3)(2, 1, 1)(2, 2)(3, 1)Note that different sequences are counted as different combinations.Therefore the output is 7.
Follow up:What if negative numbers are allowed in the given array?How does it change the problem?What limitation we need to add to the question to allow negative numbers?

  这道题要求数字可重复使用,不要求数字的个数,数组中元素有序。

Solution:

public class Solution {    private int[] t;    public int combinationSum4(int[] nums, int target) {        this.t = new int[target+1];        Arrays.fill(t, -1); //highlight 1: The default value 0 could not work since you can not tell whether it is a non-solution or it has not been caculated.        t[0]=1; //highlight 2: The very initial case is target is 0, means there are some value in the array equals to the target. So return 1.        return incursive(nums, target);    }    private int incursive(int[] nums, int target){        if(t[target]!=-1) return t[target];        int count = 0;        for(int n:nums){            if(target>=n) count += incursive(nums, target-n);        }        t[target] = count;        return count;    }}

Date:2017年12月12日

阅读全文
0 0
原创粉丝点击