Поскольку я новичок в программировании, в настоящее время я пытаюсь применить основы, которые я изучил, решая некоторые простые проблемы в LeetCode. Однако проблема «3Sum» привела меня к тому, что я просто не понимаю.
Вот определение упражнения:
Учитывая массив чисел из n целых чисел, существуют ли элементы a, b, c в числах, такие что a + b + c = 0? Найти все уникальные тройки в массиве, который дает сумму нуля.
Теперь вот что я придумала:
var result = [];
var threeSum = function(nums) {
for (let i = 1; i < nums.length; i++) {
for (let j = i + 1; j < nums.length; j++) {
if (nums[0] + nums[i] + nums[j] == 0) {
result.push([nums[0], nums[i], nums[j]])
}
}
}
if(nums.length > 3) {
nums.shift();
threeSum(nums);
} else {
console.log("result: ", result);
return result;
}
};
Теперь я проверял это со следующим вводом:
[- 1,0,1,2, -1, -4]
Оператор console.log в блоке else внизу дал:
результат: [[-1, 0, 1], [-1, 2, -1], [0, 1, -1]]
Это именно то, что я хотел, чтобы он сейчас вышел из системы.
Однако приведенный ниже оператор возврата возвращает "undefined".
Поскольку они оба находятся в одном и том же блоке else, я думаю, что они оба должны быть выполнены.
Как «result» может быть зарегистрирован как массив, однако возвращая его, он становится «неопределенным»?
Пожалуйста, обратите внимание, что я знаю, что это может быть неправильный способ решения этой проблемы, но этого решения недостаточно для упражнения. Я не прошу вносить какие-либо исправления, так как хочу разработать алгоритм самостоятельно, это просто тот факт, что в этом случае «результат» кажется одновременно определенным и неопределенным:)