LeetCode 训练场:1464. 数组中两元素的最大乘积
发布日期:2021-05-08 06:28:17 浏览次数:20 分类:精选文章

本文共 530 字,大约阅读时间需要 1 分钟。

为了使表达式 ( (nums[i]-1) \times (nums[j]-1) ) 取得最大值,我们需要考虑以下三个情况:

  • 最大的两个数:排序后的数组的最后两个元素。
  • 最大的数和最小的数:可能会产生更大的乘积,尤其是在负数的情况下。
  • 最小的两个数:如果它们都是负数,减去1后会更负,乘积可能更大。
  • 通过计算这三种情况的乘积并比较,我们可以确保得到最大的值。

    最终代码如下:

    public int maxProduct(int[] nums) {
    Arrays.sort(nums);
    int n = nums.length;
    int case1 = (nums[n - 1] - 1) * (nums[n - 2] - 1);
    int case2 = (nums[n - 1] - 1) * (nums[0] - 1);
    int case3 = (nums[0] - 1) * (nums[1] - 1);
    return Math.max(Math.max(case1, case2), case3);
    }

    这个代码首先对数组排序,然后计算三种可能的乘积,最后返回最大的那个,确保在所有情况下都能得到正确的结果。

    上一篇:LeetCode 训练场:977. 有序数组的平方
    下一篇:LeetCode 训练场:1460. 通过翻转子数组使两个数组相等

    发表评论

    最新留言

    很好
    [***.229.124.182]2025年03月27日 19时04分26秒