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

Pythonの4つのリストからターゲットよりも少ない合計を生成できる一意の4つのインデックスの数を見つけるプログラム


番号A、B、C、およびDの4つのリストがあり、別の番号ターゲットもあるとします。 A [i] + B [j] + C [k] + D[l]≤targetとなるような異なる一意のインデックスi、j、k、lの数を見つける必要があります。

したがって、入力がA =[3、2] B =[5、3] C =[1] D =[2、3] target =9の場合、次のように出力は3になります。組み合わせ:[3、3、1、2] [3、3、1、2] [2、3、1、3]

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

  • temp_list:=新しいリスト
  • 0からAのサイズの範囲のiについては、
    • 0からBのサイズの範囲のjについては、
      • temp_listの最後に(A [i] + B [j])を挿入します
  • リストtemp_listを並べ替える
  • ans:=0
  • 0からCのサイズの範囲のiについては、
    • 0からDのサイズの範囲のjについては、
      • sum_cd:=C [i] + D [j]
      • sum_ab:=target --sum_cd
      • ans:=ans+合計が<=sum_ab
      • であるtemp_list内の要素の数
  • 回答を返す

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

from bisect import bisect_right

class Solution:
   def solve(self, A, B, C, D, target):
      temp_list = []
      for i in range(len(A)):
         for j in range(len(B)):
            temp_list.append(A[i] + B[j])

      temp_list.sort()

      ans = 0
      for i in range(len(C)):
         for j in range(len(D)):
            sum_cd = C[i] + D[j]
            sum_ab = target - sum_cd

            ans += bisect_right(temp_list, sum_ab)

      return ans

ob = Solution()
A = [3, 2]
B = [5, 3]
C = [1]
D = [2, 3]
target = 9
print(ob.solve(A, B, C, D, target))

入力

[3, 2], [5, 3], [1], [2, 3], 9

出力

3

  1. 作成できる文字列の数を見つけるプログラム。ここで、「a」は「a」または「b」であり、「b」はPythonでは「b」のままです。

    「a」と「b」だけの文字列sがあるとします。 「a」は「a」のままにすることも「b」に変えることもできますが、「b」を変更することはできません。作成できる一意の文字列の数を見つける必要があります。 したがって、入力がs =baabのような場合、これらの文字列を作成できるため、出力は4になります-[baab、 babb、 bbab、 bbbb] これを解決するには、次の手順に従います- counts:=sの「a」の頻度 2^カウントを返す 理解を深めるために、次の実装を見てみましょう- 例 class Solution:    def solve(self, s

  2. Pythonプログラムで数の偶数因子の合計を見つける

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −数値が与えられているので、数値のすべての偶数因子の合計を表示する必要があります。 アプローチ 数値が奇数かどうかを確認し、偶数の因子がないため、0を返します。 数が偶数の場合、計算を実行します。 20を除く他のすべての項は、偶数の因数の合計を生成するために乗算されます。 偶数因子のすべての奇数を削除するために、1である20を無視します。このステップの後、偶数因子のみを取得しました。 2は私たちが利用できる唯一の素数であることに注意してください。 次に、以下の実装を見てみましょう- 例 # math