1464. Maximum Product of Two Elements in an Array

leetcode algorithm solution

1464. Maximum Product of Two Elements in an Array

#second fire day

Given the array of integers nums, you will choose two different indices i and j of that array. Return the maximum value of (nums[i]-1)*(nums[j]-1).

sol

class Solution:
    def maxProduct(self, nums: List[int]) -> int:
        maxi = 0
        for i in range(len(nums)-1):
            for j in range(i+1, len(nums)):
                now = (nums[i] - 1) * (nums[j] - 1)
                if now > maxi:
                    maxi = now
        return maxi
LeetCode - The World’s Leading Online Programming Learning Platform
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

I solve this problem in classic way. Since I seems to have to take two loop for i and j, took two loop (which will make this algorithm $O(n^2)$) and updated maxi when appeared maximum value of (nums[i]-1)*(nums[j]-1). This is classis way of brute force for this problem.

Brute force is not a good one, when there is other way to solve a problem. If there is better way to solve a problem, always recommend to take the other way. Show you way.

As you can see, the memory efficiency and runtime is not as good as other solutions. There must be other way to solve it

Other solution with heap

class Solution:
    def maxProduct(self, nums: List[int]) -> int:
        heap = [-num for num in nums]
        heapq.heapify(heap)
        n1 = -1 * heapq.heappop(heap)
        n2 = -1 * heapq.heappop(heap)

        return (n1-1) * (n2-1)

This hit my balls. Heap is a data structure which always spit the lowest number in the heap. So it called "minimum heap(최소힙)". As the numbers put in heap in reverse way with minus in front of it, it becomes a "maximun heap with minus".

So what this problem what is the maximun two integer. Pop twice will give you this. And just plus this. End...

💡
So cooool!

It would be good for me and you to learn about heap structure. It used in computer memory and many other algorithms.

Read more

airflow 구성하고 vscode로 코딩하기

맥에서 했으면 훨씬 구성이 쉬웠겠지만, 그리고 poetry로 했으면 훨씬 쉬웠겠지만 워낙 규모가 있는 라이브러리이다 보니 과정이 어려워 다른 참조들을 보면서 따라했다. 기본적으로 poetry랑 쓰기 어려운 이유는 airflow 내부의 라이브러리에 따라 poetry가 버전을 참조하지 못해서 에러가 나는 경우가 존재한다고 한다. 또한 하나의 문제는 mac에서는 그냥 리눅스가 존재하지만 윈도우에서 하려면 윈도우용 linux인

[Json] dump vs dumps

json은 javascript object notation의 줄임말로 웹 어플리케이션에서 구조화된 데이터를 표현하기 위한 string 기반의 포맷이다. 서버에서 클라인트로 데이터를 전송하여 표현하거나, 그 반대로 클라이언트에서 서버로 보내는 경우들에 사용된다. javascript 객체 문법과 굉장히 유사하지만 워낙에 범용성이 넓게 설계되어 있어서 다른 언어들에도 많이 사용된다. 기본적으로 python 에는 json 이 내장 모듈이다. 바로 import json해주면