(报错信息如下:Cannot invoke “java.util.Collection.toArray()“ because “c“ is null)

一些要注意的点:

怪不得 复制工作容器副本( LinkedList t = new LinkedList<>(path);)会报错(报错信息如下:Cannot invoke “java.util.Collection.toArray()” because “c” is null);

!!! 原来是因为我没有为 path 初始化 new 一片空间出来

public void dfs(int[] nums, int i,LinkedList s){ // 也可以写成LinkedList s

// 一开始 res 里面始终为空的原因是:我想用字符串作为工作容器,最后往res里面存的却是path,所以一开始一定要只确定一种方案,并且消除其他方案的影响
//真是傻逼,你用的字符串,你放弃了用path这个容器啊

dfs(nums,0,path); // String 不好转 LinkedList, 不如直接用 LinkedList

题目如下:

#代码如下:

class Solution {
        Set<List<Integer>> res ;
        LinkedList<Integer> path ;
        public List<List<Integer>> subsets(int[] nums) {

            res = new HashSet<>();
            path= new LinkedList<>();//怪不得 复制工作容器副本( LinkedList<Integer> t = new LinkedList<>(path);)会报错(报错信息如下:Cannot invoke "java.util.Collection.toArray()" because "c" is null);
            //  原来是因为我没有为 path 初始化 new 一片空间出来

            dfs(nums,0,path);   // String 不好转 LinkedList, 不如直接用 LinkedList
            return new LinkedList<>(res);

        }


        public void dfs(int[] nums, int i,LinkedList s){    // 也可以写成LinkedList<Integer> s
            if(i == nums.length){
                LinkedList<Integer> t = new LinkedList <>(path);
                // 一开始 res 里面始终为空的原因是:我想用字符串作为工作容器,最后往res里面存的却是path,所以一开始一定要只确定一种方案,并且消除其他方案的影响
                //真是傻逼,你用的字符串,你放弃了用path这个容器啊
                res.add(t);
                return;
            }

            path.add(nums[i]);
            dfs(nums,i+1, path);
            path.removeLast();
            dfs(nums, i+1, s);


        }


    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雄狮少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值