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

Pythonで指定された条件を満たす配列の要素を配置できるかどうかを確認します


numsという配列があるとします。条件に従うようにnumsの要素を再配置できるかどうかを確認する必要があります-

したがって、入力がnums =[8、-4、4、-8]のようである場合、出力は、i =0に対して[-4、-8、4、8]のように配列を配置するかのようにTrueになります。 nums [2 * 0 + 1] =2 *(-4)=-8 for i =1、nums [2 * 1 + 1] =2 * 4 =8

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

  • freq:=numsの要素とその頻度を含むマップ
  • 絶対値でソートされたnumの各項目について、
      を実行します。
    • freq [item]が0の場合、
      • 次の反復に進む
    • freq [2 * item]が0の場合、
      • Falseを返す
    • freq [item]:=freq [item]-1
    • freq [2 * item]:=freq [2 * item]-1
  • Trueを返す

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

from collections import defaultdict
def solve(nums):
   freq = defaultdict(int)
   for item in nums:
      freq[item] += 1
   for item in sorted(nums, key = abs):
      if freq[item] == 0:
         continue
      if freq[2 * item] == 0:
         return False
      freq[item] -= 1
      freq[2 * item] -= 1
   return True
nums = [8, -4, 4, -8]
print(solve(nums))

入力

[8, -4, 4, -8]

出力

True

  1. Pythonでリストの文字列要素を連結することにより、指定された文字列を形成できるかどうかを確認します

    リストに存在する多数の文字列から必要な文字列を形成できるかどうかを確認する必要がある場合があります。また、必要な文字列を取得するために結合する必要のある文字列がリストにどのような順序で存在するかは重要ではありません。 順列あり itertoolsから、さまざまな順序でリスト内の文字列の可能な組み合わせを提供する順列関数を使用できます。与えられた組み合わせが必要な文字列と一致するとすぐに、文字列を形成できると結論付けます。 例 from itertools import permutations chk_str = 'balloon' Alist = ['fly

  2. 指定された配列が単調であるかどうかを確認するPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 n個の整数を含む配列入力Arrが与えられます。入力配列が本質的に単調であるかどうかを確認する必要があります。 アレイが継続的に増加または継続的に減少している場合、そのアレイは本質的に単調であると言われます。 数学的に すべてのi<=j、の場合、配列Aは継続的に増加します。 A[i] <= A[j]. すべてのi<=j、の場合、配列Aは継続的に減少しています。 A[i] >= A[j]. ここでは、隣接するすべての要素が上記の条件のいずれかを満たしているかどうかを確