LeetCode : Maximum Product Subarray (Medium)
4406 ワード
0. Overview
2021-06-18
30m
1. Problem
2. Solution
from typing import List
def maxProduct(nums: List[int]) -> int:
min_candidates = [n for n in nums]
max_candidates = [n for n in nums]
for i in range(1, len(nums)) :
max_candidates[i] = max(min_candidates[i-1] * nums[i], max_candidates[i-1] * nums[i], max_candidates[i])
min_candidates[i] = min(min_candidates[i-1] * nums[i], max_candidates[i-1] * nums[i], min_candidates[i])
#print(max_candidates, min_candidates)
return max(max_candidates)
3. Review
前述した「Maximum Subaray」と同様の動的プログラミング手法を用いて問題を解決した.
i
に保持するリストを生成し、比較することで最大累積値を求めることができる.Reference
この問題について(LeetCode : Maximum Product Subarray (Medium)), 我々は、より多くの情報をここで見つけました https://velog.io/@star7357/LeetCode-Maximum-Product-Subarray-Mediumテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol