問題:https://leetcode.com/problems/3sum-closest/
xxsumは、一連の質問であり、一般にのみバイナリ検索を使用することができ、ハッシュは、動作しません。この問題は、必要な値に近い2つの方法でバイナリ検索やハッシュをされています。
ソートされた配列のために、数3は、第一の中間の数、その周りに他の二つの数字のために、検索以上の標的場合、左側と右側、左側または右側の位置と判定されます。
クラス解決{ パブリック: INT threeSumClosest(ベクトル< INT >&NUMS、int型のターゲット){ int型 N = nums.size()。 ソート(nums.begin()、nums.end()); int型は =オフセットINT_MAXを。 int型のres = 0 ; 用(int型のk = 1であり; n <K - 1 ; kは++ ) { int型私は= 0 。 int型 J = N - 1 。 しばらく(I <K && J> K) { INT NUM = NUMS [K] + NUMS [I] + NUMS [J]。 もし(ABS(ターゲット- numが)< オフセット) { オフセット = ABS(標的- NUM)を、 RES = NUM; } であれば(NUM == ターゲット) { 戻りターゲット; } そう であれば(NUM> ターゲット) { J - 。 } 他 { I++ ; } } } 戻りRES。 } }。