-
Notifications
You must be signed in to change notification settings - Fork 13
/
018-cartesian-product.js
17 lines (14 loc) · 1.08 KB
/
018-cartesian-product.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// A Cartesian product is a mathematical operation that returns the set of all possible ordered pairs (a, b) where a belongs to set A and b belongs to set B. It can also be extended to more than two sets, resulting in the set of all possible ordered tuples (a, b, c, ...) where a belongs to set A, b belongs to set B, c belongs to set C, and so on.
function cartesianProduct(setA, setB) {
var product = [];
for (var i = 0; i < setA.length; i++) {
for (var j = 0; j < setB.length; j++) {
product.push([setA[i], setB[j]]);
}
}
return product;
}
console.log(cartesianProduct([1, 2], ["a", "b"]));
// Output: [[1, 'a'], [1, 'b'], [2, 'a'], [2, 'b']]
// In terms of time complexity, the function I provided earlier has a time complexity of O(mn), where m and n are the sizes of the sets. This is because for each element in set A, it iterates through all elements in set B, resulting in a total of m*n iterations.
// In terms of space complexity, it has a space complexity of O(mn) as well, because it stores the Cartesian product of the two sets in a new array which is of size m*n.