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]) 之间的 乘积差 取到 最大值 。
返回以这种方式取得的乘积差中的 最大值 。
参数限制:
4 <= nums.length <= 104
1 <= nums[i] <= 104
遍历一遍找出最大的两个数和最小的两个数,最大的两个数之积减去最小的两个数之积即为最大乘积差:
class Solution {
public:
int maxProductDifference(vector<int>& nums) {
if (nums.size() < 4) {
return -1;
}
int min = 10000, biggerThanMin = 10000;
int max = 0, smallerThanMax = 0;
for (int num : nums) {
if (num < biggerThanMin) {
if (num < min) {
biggerThanMin = min;
min = num;
} else {
biggerThanMin = num;
}
}
if (num > smallerThanMax) {
if (num > max) {
smallerThanMax = max;
max = num;
} else {
smallerThanMax = num;
}
}
}
return smallerThanMax * max - biggerThanMin * min;
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)