1464. 数组中两元素的最大乘积(2026.07.27)

题目描述

给你一个整数数组 nums,请你选择数组的两个不同下标 ij,使 (nums[i]-1)*(nums[j]-1) 取得最大值。

请你计算并返回该式的最大值。

示例 1

输入: nums = [3,4,5,2]

输出: 12

解释: 选择下标 i=1j=2(下标从 0 开始),可以获得最大值 (4-1)*(5-1) = 3*4 = 12

示例 2

输入: nums = [1,5,4,5]

输出: 16

解释: 选择下标 i=1j=3,可以获得最大值 (5-1)*(5-1) = 16

示例 3

输入: nums = [3,7]

输出: 12

提示

  • 2 <= nums.length <= 500
  • 1 <= nums[i] <= 10^3

苯人思路

cpp 复制代码
class Solution {
public:
    int maxProduct(vector<int>& nums) {
        sort(nums.begin(), nums.end());
        int n = nums.size();

        // 输出 最大两个数-1后的乘积 和最小两个数-1后的乘积 中较大的那个
        // 此处考虑了 nums 元素为负数的情况
        return ((nums[n-1]-1)*(nums[n-2]-1)>(nums[0]-1)*(nums[1]-1))?(nums[n-1]-1)*(nums[n-2]-1):(nums[0]-1)*(nums[1]-1);
    }
};
相关推荐
KaMeidebaby2 小时前
卡梅德生物技术快报 | 核酸适配体文库测序:核酸适配体文库测序的技术原理、实验流程与数据解析
前端·网络·数据库·人工智能·算法
geovindu3 小时前
CSharp: Breadth First Search Algorithm and Depth First Search Algorithm
开发语言·后端·算法·c#·.net·搜索算法
库克克3 小时前
【C++】set 与multiset
开发语言·c++
Mortalbreeze4 小时前
深入 Linux Socket 编程:端口号、网络字节序与 struct sockaddr 详解
linux·服务器·网络·c++
ekkoalex4 小时前
训练框架以及算法实现的框架
算法
DFT计算杂谈4 小时前
交错磁研究进展材料物性与交叉应用
数据库·人工智能·python·opencv·算法
玖玥拾4 小时前
LeetCode 26 删除有序数组中的重复项
算法·leetcode
Kina_C4 小时前
LVS负载均衡的十二种核心调度算法
linux·运维·算法·负载均衡·lvs
吞下星星的少年·-·5 小时前
牛客技能树:小红走矩阵(dp入门)
算法·dp