其中A,B都是集合S中元素,请给出算法描述,代码与时间复杂度分析.
int findNum(vector<int> &S)
{
sort(S.begin(), S.end());
int n = S.size();
for (int i = n-1; i >= 2; i--)
{
int left = 0;
int right = i-1;
while (left < right)
{
int temp = S[left] + S[right];
if (temp == S[i])
{
return S[i];
}
else if (temp < S[i])
{
left++;
}
else
{
right--;
}
}
}
return -1;
}