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);
    }
};
相关推荐
OPEN-F3 分钟前
ROS2系列教程:上位机建图与导航(原理综合)
算法·机器人
weixin_307779134 分钟前
C++代码实现MATLAB中的fitrtree函数功能
开发语言·c++·算法·matlab
AI wins8 分钟前
c++新增頭文件
c++
Shadow(⊙o⊙)18 分钟前
仿muduo实现高并发服务器——事件就绪管理Channel.hpp
服务器·c++
tomwang032220 分钟前
路径优化建模、优化算法分类及工程化小结
算法·数学建模·分类
小羊没烦恼!22 分钟前
Ajax与JSON的一些总结
android·java·前端·数据库·mysql·算法·okhttp
by2099928 分钟前
哈希表——快速找到数据:冲突、删除与扩容的实现
数据结构·c++·哈希算法·散列表
2501_9269783339 分钟前
人机通信协议--人和机器之间的交互想象
人工智能·经验分享·算法·ai写作
行者全栈架构师42 分钟前
【鸿蒙心迹】互动卡片全链路——把核心功能放到桌面(FormKit 实战)(HarmonyOS 7.x)
前端·算法·架构
无定义_1 小时前
10.11日常训练
算法