Python
 Computer >> コンピューター >  >> プログラミング >> Python

合計がターゲットより少ないかPythonでない配列からトリプレットの数をチェックするプログラム


numsと呼ばれる数値のリストと別の値のターゲットがあるとすると、nums [i] + nums [j] + nums [k]

したがって、入力がnums =[-2、6、4、3、8]、target =12の場合、トリプレットは[-2,6,4]、[-2)であるため、出力は5になります。 、6,3]、[-2,4,3]、[-2,4,8]、[-2,3,8]

これを解決するには、次の手順に従います-

  • リスト番号を並べ替える

  • ans:=0

  • n:=numsのサイズ

  • 0からn-1の範囲のiの場合、実行

    • k:=n − 1

    • i + 1からn-1の範囲のjについては、次のようにします

      • k>jおよびnums[i]+ nums [k] + nums [j]> =ターゲットの場合、実行

        • k:=k − 1

      • jがkと同じ場合、

    • ans:=ans + k − j

  • ansを返す

理解を深めるために、次の実装を見てみましょう-

class Solution:
   def solve(self, nums, target):
      nums.sort()
      ans = 0
      n = len(nums)
      for i in range(n):
         k = n − 1
         for j in range(i + 1, n):
            while k > j and nums[i] + nums[k] + nums[j] >=
target:
               k -= 1
            if j == k:
               break
            ans += k − j
      return ans
ob1 = Solution()
nums = [−2, 6, 4, 3, 8]
target = 12
print(ob1.solve(nums, target))

入力

[-2, 6, 4, 3, 8], 12

出力

5

  1. Pythonで合計がkであるパスの数をカウントするプログラム

    二分木と別の値kがあるとすると、合計がkになるサブ子パスへの一意のノードの数を見つける必要があります。 したがって、入力が次のような場合 k =5の場合、パスは[2、3]と[1、4] であるため、出力は2になります。 これを解決するには、次の手順に従います- count:=マップは最初にキー0の値1を保持します ans:=0、プレフィックス:=0 関数dfs()を定義します。これはノードを取ります ノードがnullでない場合、 プレフィックス:=プレフィックス+ノードの値 ans:=ans +(count [prefix --target]、これが利用できない場合は0にな

  2. 数値が素数かどうかをチェックするPythonプログラム

    ここでは、1より大きい指定された数が素数であるかどうかをテストするプログラムを作成します。 素数は1より大きい正の整数であり、2つの因子1と、その数自体(たとえば、数:2、3、5、7…など)は2つの因子しかないため、素数です。 1と番号自体。 # Python program to check if the input number is prime or not #Take input from the user num = int(input("Please enter the number: ")) #Check if the given number is gre