Letcode 9월 11일
1378 단어 pythoncomputerscience
"""
입력: [2,3,-2,4]
산출: 6
설명:[2,3] 가장 큰 제품을 보유하고 있다.
"""
천진한 해결 방안-
가능한 모든 하위 그룹을 교체하고 최대 값을 되돌려줍니다.
암호 -
def maxProduct(self, nums: List[int]) -> int:
ans = float('-inf')
for i in range(len(nums)):
for j in range(i, len(nums)):
ans = max(ans, reduce(lambda x,y: x*y, nums[i:j+1]))
return ans
시간 복잡도 = O (n^2)더 좋은 해결 방안은 두 가지 변수를 유지하고 현재 위치로 끝나는 최대 제품과 최소 제품을 저장하는 것이다.
그리고 우리는 그룹을 한 번 훑어보았고, 그룹의 모든 인덱스 i에 대해 [i]로 끝나는 최대와 최소 곱셈을 업데이트했다.색인에서 가장 큰 곱셈이 결과보다 크면 결과를 업데이트합니다.
def maxProduct(self, nums: List[int]) -> int:
# to store the max and min ending till the previous index.
max_ending, min_ending = 1, 1
# to store the maximum result so far
max_so_far = min(nums)
for num in nums:
temp = max_ending
# update the max product ending at current index
max_ending = max(num, max(num * max_ending, num* min_ending))
# update the minimum product ending at current index
min_ending = min(num, min(num * temp, num * min_ending))
max_so_far = max(max_so_far, max_ending)
return max_so_far
Reference
이 문제에 관하여(Letcode 9월 11일), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/skbhagat40/leetcode-september-day11-2j3f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)