2024.3.5力扣(<=1200)刷题记录2

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

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)

七、1455. 检查单词是否为句中其他单词的前缀

题解:http://t.csdnimg.cn/alGHr

感谢你看到这里!一起加油吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值