アレイ所与 nums
の n個の 整数と整数 target
、三の整数を見つける nums
合計が最も近くなるように target
。三つの整数の合計を返します。あなたは、各入力は正確に一つの解決策を持っているであろうと仮定してもよいです。
例:
所与のアレイNUMS = [-1、2、1、-4]、およびターゲット= 1の ターゲットに最も近い和である2(-1 + 2 + 1 = 2)。
クラスソリューション{ 公共 のint threeSumClosest(INT [] NUMS、INT ターゲット){ int型 globalMin = Integer.MAX_VALUEで、 int型のres = globalMin。 もし(NUMS == NULL || nums.length == 0 ){ 戻りRES。 } は、Arrays.sort(NUMS)。 以下のために(INT iは= 0; iが<nums.length - 2; I ++ ){ // 私もスキップ する場合(I> 0 && NUMSを[I - 1] == NUMSは、[I]){ 続けます。 } int型 J = I + 1、K = nums.length - 1 。 // 二度同じ番号を追加することができるので、jおよびkは満たすことができない ながら(J < K){ int型の和= NUMS [I] + NUMS [J] + NUMS [K]。 もし(合計< ターゲット){ 場合(ターゲット-和< globalMin){ globalMin =ターゲット- 和。 RES = 合計。 } J + = 1 ; } 他{ もし(合計-ターゲット< globalMin){ globalMin =和- ターゲット。 RES = 合計。 } K - = 1 ; } } } 戻りRES。 } }