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

Pythonのサブリスト合計操作を使用して1つのリストを他のリストと同一に変換するプログラム


2つのリストl1とl2があるとすると、この操作を繰り返し適用してリストを等しくする必要があります-サブリストを選択し、サブリスト全体をその合計に置き換えます。最後に、上記の操作を適用した後、可能な限り長い結果のリストのサイズを返します。解決策がない場合は、-1を返します。

したがって、入力がl1 =[1、4、7、1、2、10] l2 =[5、6、1、3、10]の場合、この操作を次のように実行するかのように、出力は4になります。次の-

  • l1のサブリスト[1、4]を取得すると、[5、7、1、2、10]が得られます
  • l1のサブリスト[1、2]を取得すると、[5、7、3、10]が得られます
  • l2のサブリスト[6、1]を取得すると、[5、7、3、10]になります。

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

  • i:=l1のサイズ-1、j:=l2のサイズ-1、res:=0
  • i>=0およびj>=0の場合、do
    • l1[i]がl2[j]と同じ場合、
      • res:=res + 1、i:=i --1、j:=j-1
    • それ以外の場合、l1 [i]
    • i> 0がゼロ以外の場合、
      • l1 [i-1]:=l1 [i-1] + l1 [i]
    • i:=i-1
  • それ以外の場合、l1 [i]> l2 [j]の場合、
    • j> 0の場合、
      • l2 [j-1]:=l2 [j-1] + l2 [j]
    • j:=j-1
  • iが-1と同じで、jが-1と同じ場合はresを返し、それ以外の場合は-1を返します
  • 理解を深めるために、次の実装を見てみましょう-

    class Solution:
       def solve(self, l1, l2):
          i, j, res = len(l1) - 1, len(l2) - 1, 0
          while i >= 0 and j >= 0:
             if l1[i] == l2[j]:
                res, i, j = res + 1, i - 1, j - 1
             elif l1[i] < l2[j]:
                if i > 0:
                   l1[i - 1] += l1[i]
                i -= 1
             elif l1[i] > l2[j]:
                if j > 0:
                   l2[j - 1] += l2[j]
                j -= 1
             return res if i == -1 and j == -1 else -1
    ob = Solution()
    l1 = [1, 4, 7, 1, 2, 10]
    l2 = [5, 6, 1, 3, 10] print(ob.solve(l1, l2))

    入力

    [1, 4, 7, 1, 2, 10], [5, 6, 1, 3, 10]

    出力

    4

    1. リストの累積合計を見つけるPythonプログラム

      この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが与えられたので、累積合計でリストを作成する必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # cumulative sum def Cumulative(l):    new = []    cumsum = 0    for element in l:       cumsum += element       new.append(cumsum) &

    2. 配列を同じ項目の通常のリストに変換するPythonプログラム

      配列が与えられます。私たちのタスクは、配列を通常のリストに変換することです。 tolist()関数を使用してこの問題を解決します。この関数は、配列を(ネストされている可能性のある)リストとして返します。 アルゴリズム Step 1: Given an array. Step 2: convert the array to a list using tolist() function. Step 3: Display list サンプルコード #Python program to convert an array to an ordinary #list with the same ite