LC 1464.Maximum Product of Two Elements in an Array
题目描述
这是 LeetCode
上的 1464.
数组中两元素的最大乘积 ,难度为简单。
给你一个整数数组 nums
,请你选择数组的两个不同下标
i
和 j
,使
(nums[i]-1)*(nums[j]-1)
取得最大值。
请你计算并返回该式的最大值。
示例 1:
1 |
|
示例 2:
1 |
|
示例 3:
1 |
|
提示:
2 <= nums.length <= 500
1 <= nums[i] <= 10^3
解答
方法一:模拟
根据题目要求只需要找出数组中的最大值和次最大值就行,次最大值可能在最大值遍历的前一个找到或者继续遍历的过程中找到。
1 |
|
时间复杂度:\(O(n)\) ,遍历一次数组,所以时间复杂度为 \(O(n)\)。
空间复杂度:\(O(1)\),存储两个
int
变量,所以空间复杂度为 \(O(1)\)。
方法二:排序
最容易想到的方法就是排序之后取最大值和次最大值。
1 |
|
时间复杂度:\(O(n\log n)\),排序的时间复杂度为 \(O(n \log n)\)。
空间复杂度:\(O(n)\),排序的空间复杂度为\(O(n)\)。
每题一图
LC 1464.Maximum Product of Two Elements in an Array
https://chen-huaneng.github.io/2023/12/06/2023-12-6-2023-12-06-lc-1464/