class Solution:
def maxProduct(self, nums: List[int]) -> int:
nums.sort()
return (nums[-1] - 1) * (nums[-2] - 1)
这里sort()函数时间复杂度为O(nlogn),即整体时复为O(nlogn),空复为O(1)。
以上是偷懒做法(当然我暂时只会这个),正确做法应该为一次遍历,维护最大和次大值,根据官方题解. - 力扣(LeetCode),来学习一下:
class Solution:
def maxProduct(self, nums: List[int]) -> int:
#时复n,空复1
a,b = nums[0],nums[1]
if a < b:
a,b = b,a #a保存最大值,b次大值
for i in range(2,len(nums)):
if nums[i] > a: #比最大值大
a,b = nums[i],a #此时nums[i]最大,a次大 --->给a,b
elif nums[i] > b:
b = nums[i]
return (a - 1)*(b - 1)
感谢你看到这里!一起加油吧!