leetcode - 1464. Maximum Product of Two Elements in an Array

Description

Given the array of integers nums, you will choose two different indices i and j of that array. Return the maximum value of (nums[i]-1)*(nums[j]-1).

Example 1:

复制代码
Input: nums = [3,4,5,2]
Output: 12 
Explanation: If you choose the indices i=1 and j=2 (indexed from 0), you will get the maximum value, that is, (nums[1]-1)*(nums[2]-1) = (4-1)*(5-1) = 3*4 = 12. 

Example 2:

复制代码
Input: nums = [1,5,4,5]
Output: 16
Explanation: Choosing the indices i=1 and j=3 (indexed from 0), you will get the maximum value of (5-1)*(5-1) = 16.

Example 3:

复制代码
Input: nums = [3,7]
Output: 12

Constraints:

复制代码
2 <= nums.length <= 500
1 <= nums[i] <= 10^3

Solution

Brute Force

Time complexity: o ( n 2 ) o(n^2) o(n2)

Space complexity: o ( 1 ) o(1) o(1)

Math Trick

The largest result must be the product of the largest element and second largest element. So go through the list and find out the largest and second largest element.

Time complexity: o ( n ) o(n) o(n)

Space complexity: o ( 1 ) o(1) o(1)

Code

Math Trick

python3 复制代码
class Solution:
    def maxProduct(self, nums: List[int]) -> int:
        res = 0
        p1, p2 = 0, 0
        for each_num in nums:
            if each_num > p1:
                p2 = p1
                p1 = each_num
            elif each_num > p2:
                p2 = each_num
        return (p1 - 1) * (p2 - 1)
相关推荐
夏鹏今天学习了吗1 天前
【LeetCode热题100(77/100)】杨辉三角
算法·leetcode·职场和发展
1***43801 天前
MATLAB高效算法实战技术文章大纲工程领域的应用背景
开发语言·算法·matlab
求梦8201 天前
【力扣hot100题】搜索二维矩阵II(16)
算法·leetcode·矩阵
2501_901147831 天前
单词拆分(Word Break)题解 | 动态规划解法
考研·算法·动态规划
翱翔的苍鹰1 天前
使用PyTorch实现线性回归的完整流程
算法·回归·线性回归
万行1 天前
机器人系统ros2&期末速通2
前端·人工智能·python·算法·机器学习
qq_433554541 天前
C++ 图论算法:二分图最大匹配
c++·算法·图论
MSTcheng.1 天前
【算法】滑动窗口解决力扣『将x减到0的最操作数』问题
算法·leetcode·职场和发展
静心问道1 天前
动态规划分类及算法实现
算法·分类·动态规划
bbq粉刷匠1 天前
Java—排序1
数据结构·算法·排序算法