Pythonを使用して最大の昇順サブアレイ合計を見つけるプログラム
numsと呼ばれる正の値の配列があるとすると、昇順のサブ配列の可能な最大合計をnumsで見つける必要があります。サブ配列[nums_l、nums_l + 1、...、nums_r-1、nums_r]は、l <=i
したがって、入力がnums =[15,25,35,5,15,55]のようである場合、[5,15,55]が最大合計でサブ配列を増やしているため、出力は75になります。
これを解決するには、次の手順に従います-
-
合計:=nums [0]
-
max_total:=nums [0]
-
1からnumsのサイズの範囲のiの場合、実行します
-
nums [i]> nums [i-1]の場合、
-
合計:=合計+ nums [i]
-
-
それ以外の場合
-
合計:=nums [i]
-
-
total> max_totalの場合、
-
max_total:=合計
-
-
-
max_totalを返す
理解を深めるために、次の実装を見てみましょう-
例
def solve(nums): total=nums[0] max_total=nums[0] for i in range(1,len(nums)): if nums[i] > nums[i-1]: total+=nums[i] else: total=nums[i] if total > max_total: max_total=total return max_total nums = [15,25,35,5,15,55] print(solve(nums))
入力
[15,25,35,5,15,55]
出力
75
-
Pythonで最大の合計を持つ連続したサブリストの合計を見つけるプログラム
配列Aがあるとします。最大合計を持つ連続したサブリストを見つけ、その合計を返す必要があります。したがって、配列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からAのサイズ– 1 dp [i]:=最大dp [i – 1] +A[i]およびA[i] dpで最大値を返す 理解を深めるために、次の実装を見てみま
-
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] * num