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 = NUMS [あなた-1] + NUMS [あなた-2] + NUMS [あなた-3]; {(; I <SIZ-2 ++ iは0 = INT)のために int型のL = I + 1、R =あなた-1; INT TEMP = NUMS [I] + NUMS [L] + NUMS [R]。 IF(ABS(目標温度)<ABS(ターゲット-RES))RES = TEMP。 一方、(L <R){ IF(R-L + 1 <= 2)ブレーク。 IF(温度<目標)temp- = NUMS [L]、TEMP + = NUMS [+ +1]。 そうであれば(TEMP>ターゲット&& R> L)temp- = NUMS [R]、TEMP + = NUMS [ - R]。 もし(一時==ターゲット)リターン・ターゲット。 IF(ABS(目標温度)<ABS(ターゲット-RES))RES = TEMP。 // COUT << TEMP << ' '<< L <<'' << R << ENDL。 } } 解像度を返します。 } }。