>中插值 - 不皮的皮卡丘 - 博客园">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);
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)