我正在尝试打印数组中的所有三元组,与3SUM或类似的东西不同,它们不满足任何条件。我只想打印它们。
我的简单解决方案
for (int i = 0; i < arr.length - 2; i++) {
for (int j = i + 1; j < arr.length - 1; j++) {
for (int k = j + 1; k < arr.length; k++){
System.out.println(arr[i] + " " + arr[j] + " " + arr[k]);
}
}
}
在O(n^3)
中运行,其三元组数量为((n)*(n-1)*(n-2))/(3!)
。
所以我的问题是,这可以比O(n^3)
更快地完成吗?
答案 0 :(得分:3)
n choose 3
,即三胞胎组合的数量,是
O(n^3)
的。
所以不,理论上不可能做得更好,因为仅仅操作打印它们将采用 O(n^3)
操作。
答案 1 :(得分:2)
您无法在position == undefined
操作中打印n^3
三胞胎。
如果计算时间有问题,您可以在n^3
个帖子中划分您的打印操作,理论上这样可以减少n
的时间。