Edit: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
Цель состоит в том, чтобы добавить «список» к «результату», эта функция является частью ответа на вопрос с линией. Однако, когда я использую вторую версию, вывод [[], ..., []], в основном весь внутренний список пуст. Если я переключусь на первый, это сработает. Вот почему я немного смущен –
Не могли бы вы представить свою реализацию решения проблемы суммарной суммы? – Brion