回溯算法踩坑

回溯算法踩坑,第1张

>中插值 - 不皮的皮卡丘 - 博客园">Java 引用传值之向List>中插值 - 不皮的皮卡丘 - 博客园

public class Solution {
    List temp=new ArrayList<>();
    List> res=new ArrayList<>();

    @Test
    public  void test(){
     combine(3,2);
    }

    public List> combine(int n, int k) {
        backtracking(n,k,1,temp,res);
        return res;

    }
    public void backtracking(int n,int k,int startIndex, List temp,List> list){
        if(temp.size()==k){
          // 注意:不能直接执行res.add(temp);这行代码,这样会导致最终的结果都是空集合
            // 因为这行代码代表res集合的引用指向temp集合,而temp集合又是不断改变的,所以会导致最终的结果不正确
          res.add(new ArrayList<>(temp));
            return;

        }
        for(int i=startIndex;i<=n;i++){
            temp.add(i);
            backtracking(n,k,i+1,temp,list);
            temp.remove(temp.size()-1);

        }
    }

}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/874474.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存