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

题目描述

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

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

示例 1

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

输出: 12

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

示例 2

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

输出: 16

解释: 选择下标 i=1 和 j=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);
    }
};
相关推荐
Omics Pro41 分钟前
Cell封面|衰老生物学开源AI工具包
数据库·人工智能·算法·机器学习·自然语言处理
释厄6232 小时前
多黑洞具现论·物理/生物/金融三域显化·虚拟宇宙黑洞·奇点=0 圆圈
开发语言·数据结构·人工智能·程序人生·安全威胁分析
UIU1143 小时前
递归算法与汉诺塔
c++·学习·算法·c#·递归
Fruit_Caller3 小时前
static
开发语言·c++
用户979984807188 小时前
200 行代码写一个能跑的 AI Agent:不依赖任何框架,只靠 tool-calling 原理
算法
threerocks8 小时前
【Muse实战】X 流量作战室搭建保姆级教程 - 拥有你自己的运营团队
算法
GreenTea8 小时前
深度拆解 ScienceBuddy:如何用“双层递归自进化”构建高可靠科研 Agent Harness
前端·后端·算法
花椒技术9 小时前
2.46 秒生成 5 秒视频:拆解 H3 Max 的模型、推理栈与硬件协同
算法·音视频开发·视频编码
vivo互联网技术9 小时前
ART:妆容迁移框架,重新定义高保真妆容迁移 | ECCV 2026
人工智能·算法·图像识别
用户0441440924499 小时前
卫星信号模拟器里的四个坐标转换公式
算法