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);
    }
};
相关推荐
phltxy1 小时前
C语言操作符详解
java·c语言·算法
RuoZoe1 小时前
从 2026 年 3 月 1 日开源,到 26.10.9:Jalium UI 半年时间到底走了多远?
c语言·c++
aqiu1111111 小时前
【LeetCode 902】最大为 N 的数字组合 - 详细题解与数位组合思路
数据结构·算法·leetcode·蓝桥杯·数位dp
辰烨chenye2 小时前
LeetCode Hot 100 题解 · 哈希篇
算法·leetcode·哈希算法
罗西的思考3 小时前
DreamZero 与 DreamDojo:世界模型与策略的分层协同综合分析与对比
人工智能·算法·机器学习
鱼子星_3 小时前
【C++】继承和多态(上)
c++·笔记
玖玥拾3 小时前
LeetCode 219 存在重复元素 II
算法·leetcode·哈希算法·散列表
知无不研4 小时前
c语言中循环的介绍与简单应用
c语言·开发语言·算法·循环·for·while
郝学胜-神的一滴4 小时前
Qt 高级编程 045:坐标体系深度实战
开发语言·c++·windows·python·qt·程序人生