アレイ所与 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、トータル リターンの年