큰 수와 그 다음으로 큰 수를 찾아야 했기에
우선 힙을 반대로 돌리는 과정을 거쳤다 그리고 heappop으로 루트에 있는 수들을 꺼낸 뒤, 그들의 곱을 return 하였다.
import heapq
class Solution:
def maxProduct(self, nums: List[int]) -> int:
heap =[]
max_heap = []
for s in nums:
heapq.heappush(heap, (-s, s))
while heap:
max_heap.append(heapq.heappop(heap)[1])
first_max = max_heap[0] - 1
second_max = max_heap[1] - 1
return first_max * second_max
class Solution(object):
def maxProduct(self, nums):
first, second = 0, 0
for number in nums:
if number > first:
# update first largest and second largest
first, second = number, first
elif number > second:
# update second largest
second = number
return (first - 1) * (second - 1)
큰 수들을 계속해서 갱신시키는 방법으로 풀었다.
나는 heapq 모듈을 사용해보고 싶어 heapq를 주로 사용하였는데,
이런 방법도 있는 것 같다.