Post

leetcode(리트코드)152-Maximum Product Subarray

leetcode 152 - Maximum Product Subarray 문제입니다.

1. 문제

https://leetcode.com/problems/maximum-product-subarray/


2. Input , Output


3. 분류 및 난이도

Medium 난이도 문제입니다.
https://www.teamblind.com/post/New-Year-Gift---Curated-List-of-Top-75-LeetCode-Questions-to-Save-Your-Time-OaM1orEU에서 추천한 문제입니다.


4. 문제 해석

  • 곱한 값이 가장 큰 부분배열을 찾아야합니다.
  • ’-‘을 잘 처리해주어야합니다. 1시간정도 고민하다가 discuss로 힌트를 얻었습니다..

5. code

python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution:
    def maxProduct(self, nums: List[int]) -> int:
        maxP = -11
        minP = 11
        result = -98765321
        for i in range(len(nums)):
            if nums[i] < 0 : 
                temp = maxP
                maxP = minP
                minP = temp
            maxP = max(nums[i],maxP * nums[i])
            minP = min(nums[i],minP * nums[i])
            result = max(maxP,result)
            
        return result

c++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
public:
    int maxProduct(vector<int>& nums) {
        if(nums.size()==0)
            return 0;
        int maxP = 1;
        int minP = 1;
        int result = INT_MIN;
        for(auto i =0 ; i<nums.size();++i)
        {
            if(nums[i]<0)
                swap(maxP,minP);
            maxP = max(nums[i],nums[i] * maxP);
            minP = min(nums[i],nums[i] * minP);
            result = max(result,maxP);
        }

    
        return result;
    }

};

6. 결과 및 후기, 개선점

코드에 대한 설명이 필요하신 분은 댓글을 달아주세요.!!

Discuss를 봤으니 x

This post is licensed under CC BY 4.0 by the author.