【发布时间】:2015-03-26 20:18:55
【问题描述】:
这是一个面试问题,所需的复杂度是 O(nlogn)。我已经实现了一个 O(n^2 logn) 的解决方案。 鉴于解决方案存在。 也请提供您的解决方案的伪代码。 谢谢。
我的 O(n^2 logn) 解决方案的代码片段:
triplet SumOf3(vector<int> A, vector<int> B, vector<int> C, int T)
{
sort(A.begin(), A.end());
sort(B.begin(), B.end());
sort(C.begin(), C.end());
for (int i = 0; i < A.size(), ++i) {
for (int j = 0; j < B.size(); ++j) {
int s = A[i] + B[j];
int ind = int(lower_bound(C, C + C.size(), T - s) - C.begin());
if (s + C[ind] == T) {
triplet ans;
ans.a = A[i];
ans,b = B[j];
ans.c = C[ind];
return ans;
}
}
}
}
【问题讨论】:
-
你错了。这不是采访。这是关于组合微积分的考试。
-
if(Arrays.binarySearch(C, num - sum) > 0) { 中的“num”是什么
-
我认为你是对的。
-
@SariRahal,num 是 T。我的错误。已编辑。
-
注意:可以假设数组已排序,如果不是,则对它们进行排序是 O(n * log2 n)。
标签: c algorithm sorting sum binary-search