↓快轉到主要內容
  1. LeetCode/

LeetCode 1464: Maximum Product of Two Elements in an Array

·1 分鐘· ·
LeetCode Easy Array Sorting Heap-Priority-Queue
Wei Yi Chung
作者
Wei Yi Chung
Working at the contributing of open source, distributed systems, and data engineering.
目錄

基本資料
#

難易度: easy 第一次嘗試:2022-11-21

  • 提交紀錄:Accepted(一次通過)

解題思路
#

nums[i] >= 1,所以 (x - 1) >= 0,乘積最大就是兩個最大的數。掃一次記錄最大和第二大(或用 heap 拿兩次,Heap)。

我的嘗試
#

一次 AC,當時是把所有數變成負的放進 heap,彈出兩次取最大的兩個。

正確解法
#

class Solution:
    def maxProduct(self, nums: List[int]) -> int:
        a = b = 0
        for x in nums:
            if x > a:
                a, b = x, a
            elif x > b:
                b = x
        return (a - 1) * (b - 1)

複雜度
#

時間 O(n),空間 O(1)。

要特別避免的錯誤
#

  • 更新最大值時,舊的最大值要移到第二大。

面試口說整理
#

值都是正數,乘積最大就是兩個最大的數各減一相乘,我掃一次記錄最大和第二大。時間 O(n)、空間 O(1)。

相關文章

LeetCode 1337: The K Weakest Rows in a Matrix
·1 分鐘
LeetCode Easy Array Binary-Search Sorting Heap-Priority-Queue
LeetCode 1337 解題筆記:每列的士兵都在前面,用二分找第一個 0 就是士兵數;照(士兵數, 列號)排序取前 k 個
LeetCode 506: Relative Ranks
·1 分鐘
LeetCode Easy Array Sorting Heap-Priority-Queue
LeetCode 506 解題筆記:把 index 按分數由高到低排序,前三名給獎牌,其他給名次的字串,放回原本的位置
LeetCode 2357: Make Array Zero by Subtracting Equal Amounts
·1 分鐘
LeetCode Easy Array Hash-Table Greedy Sorting
LeetCode 2357 解題筆記:每次操作會讓最小的正數那一群變成 0,所以次數就是不同的正數有幾種
LeetCode 215: Kth Largest Element in an Array
·1 分鐘
LeetCode Medium Array Divide-and-Conquer Sorting Heap-Priority-Queue
LeetCode 215 解題筆記:維持大小為 k 的 min-heap,堆頂就是第 k 大;或用 quickselect 平均 O(n)
LeetCode 1122: Relative Sort Array
·1 分鐘
LeetCode Easy Array Hash-Table Sorting Counting-Sort
LeetCode 1122 解題筆記:計數後先按照 arr2 的順序輸出,剩下的數由小到大接在後面
LeetCode 1030: Matrix Cells in Distance Order
·1 分鐘
LeetCode Easy Array Math Geometry Sorting
LeetCode 1030 解題筆記:列出所有座標,按到中心的曼哈頓距離排序;回傳的是座標,不是距離