1464. 数组中两元素的最大乘积
一、问题描述
二、算法思想
算法的本质是找出数组中最大的两个数,最大的那个数好找,第二大的数不好找。
1、遍历一遍列表nums,找出其中的最大值和最小值。
2、再遍历依次nums,用sum记录最大值的个数,若sum大于1,则说明第一大和第二大的数一样,问题解决。
3、若sum等于一,最大的数只有一个,再遍历一次nums,令j等于最小值,将nums中的元素与j比较,若其不是最大值且比j大,则把其赋给j,这样查了一遍后j的值就是第二大的值了。
三、代码
class Solution(object):
def maxProduct(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
i=nums[0]
min=nums[0]
k=0
#length = len(nums)
length = self
for j in range(1,length):
if nums[j] > i:
i = nums[j]
if nums[j] < min:
min = nums[j]
sum = 0
for p in range(length):
if nums[p] == i:
sum += 1
if sum > 1:
j = i
else:
j = min
for k in range(length):
if nums[k] != i:
if nums[k] > j:
j=nums[k]
return (i-1) * (j-1)
四、题目链接
https://leetcode.cn/problems/maximum-product-of-two-elements-in-an-array/