[LeetCode] 16 3Sum Closest_Mediumタグ:アレイ、二つのポインタ

アレイ所与  nums の  n個の  整数と整数  target、三の整数を見つける  nums 合計が最も近くなるように  target三つの整数の合計を返します。あなたは、各入力は正確に一つの解決策を持っているであろうと仮定してもよいです。

例:

所与のアレイNUMSの= [-1、2、1、-4]、およびターゲット= 1の

ターゲットに最も近い合計は2である(-1 + 2 + 1 = 2)。

件名[LeetCode] 15 3Sum_Mediumタグ:アレイは非常に似ていますが、ターゲットは、次に最も近いに、彼らはまだ、その後それらの和ターゲットに最も近い、とはすべて取るように、各ペアnumの後に取得するために、2つのポインタを使用します最も近い金額を合計します。

クラスソリューション:
     DEF :3sumClosest(自己、NUMS、ターゲット)
        ANS、DIF、N = なし、なし、LEN(NUMS)
        nums.sort()
        のための I における範囲(N - 2 ):
            合計 =のNUMS [I] +セルフ.helper(NUMS、I + 1、N - 1、ターゲット- NUMS [i])と
            localDif = ABS(合計- ターゲット)
             場合 DIFはしないなし又は localDif < DIF:     
                DIF、ANS = localDif、トータル
         リターンANSの

    デフヘルパー(自己、NUMS、開始、終了、ターゲット): 
        ANS、DIF =なし、なし
         ながら開始< 終了:
            合計 =のNUMS [開始] + NUMS [END]
             であれば、総==の目標:
                 戻りELIFの合計< 目標:
                localDif =ターゲット- 
                スタート + = 1
             ELIFの合計> ターゲット:
                localDif =合計- ターゲット
                の端を - = 1
             場合 DIFはありませんなし localDif <DIF:
                DIF、年 = localDif、トータル
         リターンの

 

おすすめ

転載: www.cnblogs.com/Johnsonxiong/p/10978822.html