n個の整数と目標NUMSターゲットを含むアレイを考えます。NUMSは三つの整数を特定し、そのような彼らの最も近いことをターゲットにしています。3つの数字とリターン。各グループは唯一の答えのみ入力があることを前提としています。
例えば、配列NUMS = [-1,2,1、-4]、およびターゲット= 1が与えられます。
最も近いターゲットは、三及び番号2(-1 = 1 + 2 + 2)です。
出典:滞在ボタン(LeetCode)
問題解決のためのアイデア
戻り値3と使用双方向のポインタ法の数
1.テキスト配列のソート
結果が、絶対値の比較結果に近いです
結果よりも小さい3.ポインタを右に左に、右には大きな動きを残しました
クラスのソリューション{
/ **
* @param整数[] $ NUMS
* @param整数$ターゲット
* @return整数
* /
機能threeSumClosest($ NUMS、$ターゲット){
ソート($ NUMS)。
$、カウント=カウント数($ NUMS)。
$ ANS = $ NUMS [0] + $ NUMS [1] + $ NUMS [2]。
以下のために($ i = 0; $ iが<$カウント; $ I ++){
$スタート= $ I + 1; $最後は= $カウント - 1。
一方、{($ <$エンドを開始)
$合計= $ NUMS + $ NUMS [$ i]と[$終了]を+ $ NUMS [$スタート];
( - $合計)<ABS($ターゲット - $ ANS)、ABS($ターゲット)の場合
$ $答= I;
もし($合計> $ターゲット)
$ end--;
それ以外の場合($和<$ターゲット)
$スタート++;
他
$年返します。
}
}
$年返します。
}
}