16.最も近い3及びO(N ^ 2)の数

n個の整数と目標NUMSターゲットを含むアレイを考えます。NUMSは三つの整数を特定し、そのような彼らの最も近いことをターゲットにしています。3つの数字とリターン。各グループは唯一の答えのみ入力があることを前提としています。

例えば、配列NUMS = [-1,2,1、-4]、およびターゲット= 1が与えられます。

最も近いターゲットは、三及び番号2(-1 = 1 + 2 + 2)です。

 

アイデアは、番号を列挙し、次に取るべき定規で、他の2つの数値を決定することです。

クラスのソリューション{
公衆:
    INT threeSumClosest(ベクトル<整数>&NUMS、INT対象){
        INT SIZ = nums.size()。
        ソート(nums.begin()、nums.end());
        int型のres = NUM​​S [あなた-1] + NUMS [あなた-2] + NUMS [あなた-3];
        {(; I <SIZ-2 ++ iは0 = INT)のために
            int型のL = I + 1、R =あなた-1;
            INT TEMP = NUM​​S [I] + NUMS [L] + NUMS [R]。
            IF(ABS(目標温度)<ABS(ターゲット-RES))RES = TEMP。
            一方、(L <R){
                 IF(R-L + 1 <= 2)ブレーク。
                 IF(温度<目標)temp- = NUM​​S [L]、TEMP + = NUM​​S [+ +1]。
                 そうであれば(TEMP>ターゲット&& R> L)temp- = NUM​​S [R]、TEMP + = NUM​​S [ -  R]。
                 もし(一時==ターゲット)リターン・ターゲット。
                 IF(ABS(目標温度)<ABS(ターゲット-RES))RES = TEMP。
                // COUT << TEMP << ' '<< L <<'' << R << ENDL。
            }
        }
        解像度を返します。
    }
}。

  

おすすめ

転載: www.cnblogs.com/DreamKill/p/12590452.html