public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> result = new ArrayList<>();
result.add(new ArrayList<>());
for(int i=0; i<nums.length; i++){
int size = result.size();
for(int j=0; j<size; j++){
List<Integer> temp = new ArrayList<>(result.get(j));
temp.add(nums[i]);
result.add(temp);
}
}
return result;
}
https://leetcode.com/problems/subsets/submissions/
这是我对Leetcode的解决方案。以上算法效果很好。
我的问题是,当我在如下所示的for for循环中更改一些代码时
for(int j=0; j<size; j++){
List<Integer> temp = new ArrayList<>(result.get(j));
result.add(temp.add(nums[i]));
}
然后我得到如下错误
错误:找不到适用于add(boolean)
的合适方法result.add(temp.add(nums [i]));
我不明白为什么会收到此错误消息。
首先,我不仅找不到两者之间的任何区别,而且为什么错误消息会显示add(boolean)?我认为应该是add(int index)。这里有什么问题吗?
答案 0 :(得分:3)
您的专线
result.add(temp.add(nums[i]));
与
不同temp.add(nums[i]);
result.add(temp);
您不会将temp
添加到结果中,而是将temp.add
的结果添加为布尔值(无论元素是否已添加到集合中,在这种情况下始终为true
)