Pythonで隣接するサブアレイの最大積を見つけるプログラム
numsという配列があるとすると、最大の積を持つ配列(少なくとも1つの数値を含む)内の連続するサブ配列の要素の積を見つける必要があります。したがって、配列が[1,9,2,0,2,5]の場合、連続するサブ配列[1,9,2]の積が最大になるため、出力は18になります。
これを解決するには、次の手順に従います-
- max_list:=サイズ番号のリスト、0で埋める
- min_list:=サイズ番号のリスト、0で埋める
- min_list:=サイズ番号のリスト、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([1,9,2,0,2,5]))
入力
[1,9,2,0,2,5]
出力
18
-
Pythonのすべての隣接するサブリストの合計を見つけるプログラム
numsと呼ばれる数値のリストがあると仮定し、ここですべての隣接するサブ配列を検討します。これらのサブ配列のそれぞれを合計し、これらすべての値の合計を返します。最後に、結果を10 ** 9+7で変更します。 したがって、入力がnums =[3、4、6]のような場合、次のサブ配列があるため、出力は43になります-[3] [4] [6] [3、4] [4、6] [3、4、6]これらすべての合計は43です。 これを解決するには、次の手順に従います- N:=numsのサイズ ans:=0 0からnumsのサイズの範囲のiの場合は、 n:=nums [i] ans:=ans +(i
-
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