1. 程式人生 > >在由N個正整數的集合S中,找出最大元素C,滿足C=A + B

在由N個正整數的集合S中,找出最大元素C,滿足C=A + B

其中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;
}