LeetCode 1464. 数组中两元素的最大乘积

题目描述

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

思路分析

解法一:一次扫描(推荐)

核心思路

  • 维护数组中最大和次大值。
  • 答案为 (max1 - 1) * (max2 - 1)


复杂度分析

  • 时间复杂度:O(n),其中 n 表示数组长度。
  • 空间复杂度:O(1)。
class Solution {
    public int maxProduct(int[] nums) {
        int max1 = 0;
        int max2 = 0;

        for (int num : nums) {
            if (num > max1) {
                max2 = max1;
                max1 = num;
            } else if (num > max2) {
                max2 = num;
            }
        }

        return (max1 - 1) * (max2 - 1);
    }
}
func maxProduct(nums []int) int {
	max1, max2 := 0, 0
	for _, num := range nums {
		if num > max1 {
			max2 = max1
			max1 = num
		} else if num > max2 {
			max2 = num
		}
	}

	return (max1 - 1) * (max2 - 1)
}

相似题目

题目 难度 考察点
1464. 数组中两元素的最大乘积 简单 一次扫描
215. 数组中的第K个最大元素 中等 选择算法
628. 三个数的最大乘积 简单 扫描
414. 第三大的数 简单 扫描
1337. 矩阵中战斗力最弱的 K 行 简单 计数
本文作者:
本文链接: https://hgnulb.github.io/blog/2024/64893995
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!