[LC] 16 3Sum最寄り

アレイ所与  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。
    } 
}

 

おすすめ

転載: www.cnblogs.com/xuanlu/p/12408543.html