2024.5.1力扣刷题记录-数组篇记录5

目录

一、495. 提莫攻击

1.直接模拟

2.直接模拟(简洁版)

二、414. 第三大的数

1.维护第一、第二、第三大值

2.排序


一、495. 提莫攻击

1.直接模拟

class Solution:
    def findPoisonedDuration(self, timeSeries: List[int], duration: int) -> int:
        # 直接模拟
        # 时复O(n),空复O(1)
        pre = -1
        ans = 0
        for t in timeSeries:
            if t > pre:
                ans += duration
            else:
                ans += t + duration - 1 - pre
            pre = t + duration - 1
        return ans

2.直接模拟(简洁版)

来自题解(. - 力扣(LeetCode))。

class Solution:
    def findPoisonedDuration(self, timeSeries: List[int], duration: int) -> int:
        # 直接模拟
        # 时复O(n),空复O(1)
        ans = duration
        for i in range(1, len(timeSeries)):
            ans += min(duration, timeSeries[i] - timeSeries[i - 1])
        return ans

二、414. 第三大的数

1.维护第一、第二、第三大值

class Solution:
    def thirdMax(self, nums: List[int]) -> int:
        # 维护第一、第二、第三大值
        n = len(nums)
        if n < 3:
            return max(nums)
        a, b, c = - 2 ** 32, - 2 ** 32 - 1, - 2 ** 32 - 2
        for i in range(n):
            x = nums[i]
            if x > a:
                a, b, c = x, a, b
            elif x > b:
                if x != a:
                    b, c = x, b
            elif x > c:
                if x != b:
                    c = x
        return c if c >= - 2 ** 31 else a

2.排序

时复O(nlogn),虽然时复不满足要求。来自官方题解(. - 力扣(LeetCode))。

class Solution:
    def thirdMax(self, nums: List[int]) -> int:
        # 排序,时复O(nlogn)
        nums.sort(reverse = True)
        diff = 1
        for i in range(1, len(nums)):
            if nums[i] != nums[i - 1]:
                diff += 1
                if diff == 3:
                    return nums[i]
        return nums[0]

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

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值