Menu
CoddyTech

Maximum Product Subarray

nums의 부분 배열 원소들을 모두 곱한 뒤, 부분 배열이 만들 수 있는 가장 큰 곱을 반환하세요. 부분 배열은 간격 없이 연속된 원소를 포함하며 비어 있지 않으므로, 음수로만 이루어진 배열도 답이 있습니다. 0과 음수 값도 허용됩니다.

함수

maxProduct(nums: integer-array) → integer
numsinteger-array
-10에서 10 사이의 정수들을 곱합니다
반환값integer
비어 있지 않은 부분 배열의 최댓값

제약 조건

  • 1 ≤ nums.length ≤ 2 × 104
  • -10 ≤ nums[i] ≤ 10
  • 모든 부분 배열의 곱은 32비트 부호 있는 정수 범위에 들어갑니다.

예제

입력
nums = [2, -5, 3, -2, 0, 4]
출력
60
설명
음수 두 개는 서로 상쇄됩니다: 2 × -5 × 3 × -2 = 60. 0이 배열을 둘로 나누며, 반대편의 4는 60을 이길 수 없습니다.
challenge icon

후속 질문

최적의 부분 배열이 시작하고 끝나는 위치도 O(n) 시간과 O(1) 공간으로 어떻게 알아낼 수 있을까요?

코드 초기화
def maxProduct(nums):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

테스트 #3

인자

nums = [2, -5, 3, -2, 0, 4]

예상 출력

60