План курса / Все задачи / Алгоритмы и структуры данных
Декартово произведение
средне
Дан список целочисленных массивов nums. Верните все возможные комбинации элементов, взяв из каждого массива ровно один элемент. Порядок комбинаций не важен.
Пример 1:
Ввод: nums = [[1,2],[3]]
Вывод: [[1,3],[2,3]]
Пример 2:
Ввод: nums = [[5],[6],[7]]
Вывод: [[5,6,7]]
Ограничения:
len(nums) >= 1
len(nums[i]) >= 1
public class Solution {
private static void Bruteforce(List<List<int>> nums, int idx, List<int> combination, List<List<int>> result) {
if (idx == nums.Count) {
result.Add(new List<int>(combination));
return;
}
foreach (int num in nums[idx]) {
combination.Add(num);
Bruteforce(nums, idx + 1, combination, result);
combination.RemoveAt(combination.Count - 1);
}
}
public static List<List<int>> CartesianProduct(List<List<int>> nums) {
List<List<int>> result = new List<List<int>>();
Bruteforce(nums, 0, new List<int>(), result);
return result;
}
}