--- ###### tags: `Leetcode` --- # Leetcode 1464. Maximum Product of Two Elements in an Array [link](https://leetcode.com/problems/maximum-product-of-two-elements-in-an-array/) --- 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)`. #### Example 1: Input: nums = [3,4,5,2] Output: 12 Explanation: If you choose the indices i=1 and j=2 (indexed from 0), you will get the maximum value, that is, (nums[1]-1)*(nums[2]-1) = (4-1)*(5-1) = 3*4 = 12. #### Example 2: Input: nums = [1,5,4,5] Output: 16 Explanation: Choosing the indices i=1 and j=3 (indexed from 0), you will get the maximum value of (5-1)*(5-1) = 16. #### Example 3: Input: nums = [3,7] Output: 12 #### Constraints: - 2 <= nums.length <= 500 - 1 <= nums[i] <= 10^3 --- 題意: 給一個array, 選兩個前二大的數字作運算 --- Sort the array and then multiply the last two numbers. #### Solution 1 ```python= class Solution: def maxProduct(self, nums: List[int]) -> int: nums.sort() return (nums[-1] - 1) * (nums[-2] - 1) ``` O(T): O(nlogn) O(S): O(1) --- We also can iterate over the array, and store top two maximum numbers. #### Solution 2 ```python= class Solution: def XXX(self, nums: List[int]) -> int: largestNum = 0 secondNum = 0 for i in range(len(nums)): if nums[i] > largestNum: secondNum = largestNum largestNum = nums[i] elif nums[i] > secondNum: secondNum = nums[i] else: continue print(largestNum) print(secondNum) return (largestNum - 1) * (secondNum - 1) ``` O(T): O(n) O(S): O(1)