編輯:JAVA:爲什麼我需要建立在這個函數一個新的列表對象?
功能是回答lintcode問題「組合和」的一部分,如果我用的是第二個版本,輸出爲「[[],...,[],所有內部列表是空的,即使它們通過與價值觀。當我剛切換到第一個版本,而其他改變任何東西,它會工作。
所以我認爲它與Java參數傳遞過程中諸如此類的話我不明白你能解釋爲什麼只有第一個版本可以工作嗎?
代碼:
private void helper(ArrayList<ArrayList<Integer>> result, ArrayList<Integer> list, int target, ...) {
if (target == 0) {
result.add(new ArrayList<Integer>(list));
return;
}
...
}
問:
爲什麼我需要創建一個新的ArrayList 對象然後將其添加到結果?
這是什麼方法和下面的代碼之間的區別:
private void helper(ArrayList<ArrayList<Integer>> result, ArrayList<Integer> list, int target, ...) {
if (target == 0) {
result.add(list);
return;
}
...
}
可能有人給我講解一下?謝謝!
區別正是你所說的。要麼你正在創建一個新的列表,或者你正在使用現有的列表。這個功能的意圖是什麼? – CollinD
意圖是將「列表」添加到「結果」,該函數是lintcode問題答案的一部分。但是,當我使用第二個版本時,輸出是[[],...,[]],基本上所有的內部列表都是空的。如果我切換到第一個,它會起作用。這就是爲什麼我有點困惑 –
你能否提供解決方案的組合和問題的實現? – Brion