[Pythonの-leetcode15-]ビスポインタと最も近い3の数

タイトル説明。

n個の整数と目標NUMSターゲットを含むアレイを考えます。NUMSは三つの整数を特定し、そのような彼らの最も近いことをターゲットにしています。3つの数字とリターン。各グループは唯一の答えのみ入力があることを前提としています。

例えば、配列NUMS = [-1,2,1、-4]、およびターゲット= 1が与えられます。

最も近いターゲットは、三及び番号2(-1 = 1 + 2 + 2)です。

問題解決:

クラスソリューション:
     DEF threeSumClosest(セルフ、NUMS、ターゲット):
        空の配列または長さが3つの未満戻り空である
        IF  ません NUMS または lenの(NUMS)<3 リターンなし
         第一ソート
        nums.sort()
        は、解像度を示し無限 
        RES =フロート(INF アレイを通して左から右に
        するための I レンジ(LEN(NUMS)):
            重複値については、一度だけ計算する必要が
            IF I> 0  NUMS [I] == NUMS [-I 1。]:
                 続行
            左ポインタ
            L = I + 1
            右ポインタ
            R = LEN(NUMS) -  1
            コアは、左および右ポインタ値ポインタのうち増加する値である
            #は、このような、3つのターゲットの近くに数
            ながら L < R&LT:
                 #1 レコード3の現在の数と 
                CUR = NUMS [I] + NUMS [ L] + NUMS [R&LT]
                場合は、直接バック3つの目標数に等しい見出さ
                IF CUR == ターゲット:
                     リターン・ターゲットを
                 IF ABS(RES-ターゲット)> ABS(CURの目標):
                    最初の時間が決定されますこの時点では、無限解像度であるため、常に真 
                    のres = CUR
                 IF:CUR>ターゲット現在の値が大きすぎると、左右の手
                    R  -  = 1
                #は、現在の値は、左ポインタ右小さすぎます
                    L + 1 =
        リターン RES

これは重要なステップは、最初にすべてのlet解像度の、ある初期値は、無限であるかを決定することです。

結果:

おすすめ

転載: www.cnblogs.com/xiximayou/p/12318903.html
おすすめ