LC 1913.Maximum Product Difference Between Two Pairs
题目描述
这是 LeetCode
上的 1913.
两个数对之间的最大乘积差 ,难度为简单。
两个数对 (a, b)
和 (c, d)
之间的
乘积差 定义为 (a * b) - (c * d)
。
- 例如,
(5, 6)
和(2, 7)
之间的乘积差是(5 * 6) - (2 * 7) = 16
。
给你一个整数数组 nums
,选出四个 不同的
下标 w
、x
、y
和 z
,使数对 (nums[w], nums[x])
和
(nums[y], nums[z])
之间的 乘积差 取到
最大值 。
返回以这种方式取得的乘积差中的 最大值 。
示例 1:
1 |
|
示例 2:
1 |
|
提示:
4 <= nums.length <= 10^4
1 <= nums[i] <= 10^4
解答
方法一:贪心
要求差值最大,即求出最大的两个值相乘减去最小的两个值相乘,因此,只需遍历一次数组
nums
,找出这四个数即可,本题的思路类似于LC
1464.Maximum Product of Two Elements in an Array - Abel's Blog。
1 |
|
时间复杂度:\(O(n)\),其中
n
为数组nums
的长度。空间复杂度:\(O(1)\) 。
方法二:排序
排序之后取出最前面的两个数和最后面的两个数,按照要求相乘之后做差即可。
1 |
|
时间复杂度:\(O(n \log n)\),内部排序算法的时间复杂度为 \(O(n \log n)\)。
空间复杂度:\(O(n)\),排序的空间复杂度为 \(O(n)\)。
每题一图
LC 1913.Maximum Product Difference Between Two Pairs
https://chen-huaneng.github.io/2023/12/11/2023-12-11-2023-12-11-lc-1913/