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

Pythonでの最大製品サブ配列


numsという整数配列があるとすると、最大の積を持つ配列(少なくとも1つの数値を含む)内で連続するサブ配列を見つける必要があります。したがって、配列が[2,3、-2,4]の場合、連続するサブ配列[2,3]の積が最大になるため、出力は6になります。

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

  • max_list:=サイズ番号のリスト、0で埋める
  • min_list:=サイズ番号のリスト、0で埋める
  • max_list [0]:=nums[0]およびmin_list[0]:=nums [0]
  • 1からnumsの長さのiの場合
    • max_list [i] =max_list [i-1] * nums [i]、min_list [i-1] *nums[i]およびnums[i]の最大値
    • min_list [i] =minof min_list [i-1] * nums [i]、nums [i]、max_list [i-1] * nums [i]
  • max_listの最大値を返す

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

class Solution(object):
   def maxProduct(self, nums):
      max_list = [0] * len(nums)
      min_list = [0] * len(nums)
      max_list[0] = nums[0]
      min_list[0] = nums[0]
      for i in range(1,len(nums)):
         max_list[i] = max(max(max_list[i-1]*nums[i],min_list[i-1]*nums[i]),nums[i])
         min_list[i] = min(min(min_list[i-1]*nums[i],nums[i]),max_list[i-1]*nums[i])
      return max(max_list)
ob1 = Solution()
print(ob1.maxProduct([2,3,-2,4,-5,-6,2]))

入力

[2,3,-2,4,-5,-6,2]

出力

240

  1. PythonのSelfを除く配列の製品

    1であるn個の整数のnumsという配列があるとします。output[i]がnums[i]を除くnumsのすべての要素の積に等しくなるような配列出力を見つける必要があります。したがって、入力配列が[1,2,3,4]の場合、出力は[24,12,8,6]になります。除算演算子を使用せずにこれを解決する必要があります。 これを解決するには、次の手順に従います- right_mul:=numsと同じサイズの配列、0で埋める right_mulの最後の要素=numsの最後の要素 1からnumsの長さのiの場合 right_mul [numsの長さ– i – 1] =right_mul [numsの

  2. Pythonの最大サブアレイ

    整数配列Aがあるとします。長さが少なくとも1で、合計が最大である連続したサブ配列を見つけて、その合計を返す必要があります。したがって、配列AがA =[-2,1、-3,4、-1,2,1、-5,4]のようである場合、合計は6になり、サブ配列は[4、-1になります。 、2、1] これを解決するために、動的計画法のアプローチを使用してみます。 Aのサイズと同じ配列dpを定義し、0で埋めます dp [0]:=A [0] for i =1 to the size of A – 1 dp [i]:=最大dp [i – 1] +A[i]およびA[i] 最大値をdpで返す 理解を深める