LC40. 组合总和 II

发布时间:2024年01月16日

?代码随想录

class Solution {

    List<Integer> path = new ArrayList<>();

    List<List<Integer>> res = new ArrayList<>();

    int sum = 0 ;

    public List<List<Integer>> combinationSum2(int[] candidates, int target) {
        Arrays.sort(candidates);
        backtracking(candidates,target,0);
        return res;
    }

    public void backtracking(int [] candidates, int target, 
                        int startIndex){
        if(sum == target){
            res.add(new ArrayList<>(path));
            return;
        }

        for(int i = startIndex ; i < candidates.length; i ++){
            
            if(i > startIndex && candidates[i] == candidates[i-1]){
                continue;
            }

            if(sum + candidates[i] > target){
                break;
            }

            path.add(candidates[i]);
            
            sum += candidates[i];
            backtracking(candidates,target,i + 1);

            path.remove(path.size()-1);
            sum -= candidates[i];
        }


    }

}

文章来源:https://blog.csdn.net/xuan__xia/article/details/135624511
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。