题解 | #加起来和为目标值的组合(二)#

加起来和为目标值的组合(二)

http://www.nowcoder.com/practice/75e6cd5b85ab41c6a7c43359a74e869a

public class Solution {
    public ArrayList<ArrayList<Integer>> combinationSum2(int[] num, int target) {
        ArrayList<ArrayList<Integer>> result = new ArrayList<>();
        ArrayList<Integer> array = new ArrayList<>();
        if(num == null ||num.length == 0 || target < 0){
            return result;
        }
        Arrays.sort(num);
        dfs(num,target,result,array,0);
        return result;
    }
    private void dfs(int[] num,int target, ArrayList<ArrayList<Integer>> result, ArrayList<Integer> array,int start){
        if(target == 0){
            //找到
            result.add(new ArrayList<Integer>(array));
            return;
        }
        if(start >= num.length){
            return;
        }
        for(int i = start;i <num.length;i++){
            //去重
            if(i > start && num[i] == num[i-1]){
                continue;
            }
            if(num[i] <= target){
                array.add(num[i]);
                dfs(num,target - num[i], result, array,i+1);
                array.remove(array.size() - 1);
            }
        }
        return;
    }
}
全部评论

相关推荐

昨天 13:42
门头沟学院 Java
运气爆棚福星高赵:清✌️不用很在意项目,八股算法是重点,八股算法说的过去绝对要您
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务