目录
一、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]
完
感谢你看到这里!一起加油吧!