LeetCode 39. 组合总和

原题链接
思路:其实就是一个dfs的板子题,需要注意的只有每次回溯的过程中,注意起点位置不要直接返回0,应该是大于等于当前的index


    List> res39 = new ArrayList<>();
    public List> combinationSum(int[] candidates, int target) {
        dfs39(new ArrayList<>(),0,target,candidates,0);
        return res39;
    }
    public void dfs39(List container,int curr,int target,int [] dict, int index){
        if (curr==target){
            res39.add(new ArrayList<>(container));
            return;
        }
        for (int j = index; j < dict.length; j++) {//不能够直接从0开始遍历,应该从当前的index位置
            if (curr+dict[j]<=target){
                container.add(dict[j]);
                dfs39(container,curr+dict[j],target,dict,j);
                container.remove(container.size()-1);
            }
        }
    }

 

你可能感兴趣的:(LeetCode,java)