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

Pythonで別の配列のサブ配列を連結して配列を生成するプログラム


groupsと呼ばれる1つの2D配列と、別の配列numsがあるとします。 i番目のサブ配列がgroups[i](0-indexed)と等しくなるように、配列numsからn個の互いに素なサブ配列を選択できるかどうかを確認する必要があります。また、i> 0の場合、(i-1)番目のサブ配列が前に表示されます。 numsのi番目のサブ配列。

したがって、入力がグループのようなものである場合=[[2、-2、-2]、[4、-3,0]] nums =[1、-1,0,2、-2、-2,4、- 3,0]の場合、配列group [0]はnumsのインデックス3から5まで存在し、group [1]はnumsのインデックス6から8まで存在するため、出力はtrueになります。

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

  • i:=0

  • グループ内のgrpごとに、実行します

    • 範囲iからnums-1のサイズのjの場合、実行します

      • numsのサブ配列[インデックスjからj+grpのサイズまで]がgrpと同じである場合、

        • i:=j+grpのサイズ

        • ループから出てきます

      • それ以外の場合

        • Falseを返す

  • Trueを返す

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

def solve(groups, nums):
   i = 0
   for grp in groups:
      for j in range(i, len(nums)):
         if nums[j:j+len(grp)] == grp:
            i = j + len(grp)
            break
      else:
         return False
   return True

groups = [[2,-2,-2],[4,-3,0]]
nums = [1,-1,0,2,-2,-2,4,-3,0]
print(solve(groups, nums))

入力

[[2,-2,-2],[4,-3,0]], [1,-1,0,2,-2,-2,4,-3,0]
>

出力

True

  1. 配列内の反転をカウントするPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが表示されます。必要な反転をカウントして表示する必要があります。 反転カウントは、配列をソートするために必要なステップ数をカウントすることによって取得されます。 次に、以下の実装のソリューションを見てみましょう- 例 # count def InvCount(arr, n):    inv_count = 0    for i in range(n):       for j in range(i + 1, n):  

  2. 配列ローテーション用のPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −テキストとパターンが与えられた場合、パターンのすべての出現とその順列(またはアナグラム)をテキストで印刷する必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # maximum value MAX = 300 # compare def compare(arr1, arr2):    for i in range(MAX):       if arr1[i] != arr2[i]:       &nbs