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);
    }
};
相关推荐
Super 含13 分钟前
Android 启动优化(三):Perfetto 实战——启动时间到底花在哪里?
jvm·算法
地平线开发者30 分钟前
征程6|YOLOv5x 在 Horizon J6 平台的完整部署实战(上)
算法
青 春 记 忆32 分钟前
LeetCode 104. 二叉树的最大深度|Python 解法详解
python·算法·leetcode
watersink38 分钟前
机器学习关联分析
人工智能·算法·机器学习
牛油果子哥q44 分钟前
C++STL算法超全精讲:排序/查找/去重/遍历/最值/合并全套API、仿函数、Lambda适配、实战避坑
开发语言·c++·算法
Xeon_CC1 小时前
用C++编写屏幕准星
开发语言·c++
AI服务老曹1 小时前
摄像机安装AI视频分析完整流程:从现场物理安装、硬解配置到算法POC效果验证
人工智能·算法·音视频
孤存5221 小时前
c语言动态内存管理
c语言·开发语言·算法
牛阿大1 小时前
MPC算法
算法
薛定e的猫咪1 小时前
(ICLR2025) C‑MORL :基于约束优化高效挖掘 MORL 帕累托前沿
人工智能·深度学习·算法