問題:
ソリューション:
com.example.demoパッケージ; インポートjava.util.Arrays、 パブリック クラスTEST16 { / * * * n個の整数の指定された配列を含み、NUMSターゲティングターゲット。NUMSは3つの、の整数を見つける *と目標を最も近いようにします。3つの数字とリターン。各グループは、入力のみが唯一の答えがあることを前提としています。 * * @パラメータNUMS * @param対象 * @return * / パブリック INT threeSumClosest(INT [] NUMS、int型のターゲット){ / * 二重ポインタをソート+ 最初のデータNUMSを使用して順序付けされたので、2つのポインタの定義、ライニング次に現在の位置を指し、最後の番号、 その後数3とターゲットとの比較 * / は、Arrays.sort(NUMS)は、 INT RES NUMSを= [ 0] + NUMS [ 1 ] + NUMS [ 2 ]。 以下のために(int型 i = 0 ; iはnums.length <; iは++ ){ int型左= I + 1 。 int型、右= nums.length - 1 。 一方(左< 右){ int型の和= NUMS [I] + NUMS [左] + NUMS [右]。 もし(Math.abs(ターゲット-和)<Math.abs(ターゲット- RES)){ RES = 和。 } もし(合計>ターゲット){ 右 - ; } 他の 場合(合計< ターゲット){ 左 ++ 。 } 他{ 戻りRES。 } } } 戻りRES。 } パブリック 静的 ボイドメイン(文字列[]引数){ Test16 T = 新しいTest16()。 INT [] ARR = { 0、2、1、 - 3 }。 int型 I = t.threeSumClosest(ARR、1 )。 システム。アウト.println(I); } }