list.add()方法添加集合的问题

list.add()方法添加集合的问题

class Solution {

    public List<List<Integer>> subsets(int[] nums) {

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

        backTrack(0,nums,list,new ArrayList<Integer>());

        return list;

    }


    private void backTrack(int i, int[] nums, List<List<Integer>> list,                    ArrayList<Integer> temp){

     list.add(new ArrayList<>(temp));

     for(int j = i; j < nums.length; j++){

         temp.add(nums[j]);

         backTrack(j+1,nums,list,temp);

         temp.remove(temp.size() - 1);

     }

    }

}

老师,您好!看到这样一段代码,在backTrack方法当中,list.add()方法为什么不能直接使用list.add(temp)直接将添加到list集合当中呢?为什么要使用list.add(new ArrayList(temp))?谢谢


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕阿满 2019-11-22 12:03:02

同学你好,可以直接添加temp的,如:

http://img1.sycdn.imooc.com//climg/5dd75dc109e8d91d12040401.jpg

问一下同学不能直接添加是报什么错误吗?建议同学将报错信息贴一下。

祝:学习愉快~

  • 提问者 一只大猪蹄 #1
    比如说输入数组 [1,2,3],正确结果为[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]],但是输出结果为[[],[],[],[],[],[],[],[]],直接添加temp是可以,但是不能得到正确的结果。
    2019-11-22 12:37:27
  • 好帮手慕阿满 回复 提问者 一只大猪蹄 #2
    问一下同学添加new ArrayList(temp)可以正常运行吗?建议同学将代码贴完整,包括main方法等都贴一下,方便具体测试。祝:学习愉快~
    2019-11-22 18:07:13
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师