class Solution:
def exclusiveTime(self, n: int, logs: List[str]) -> List[int]:
stack = [] # 存放函数id
res = [0] * n
prev = 0 # 栈顶函数的时间
for log in logs:
fid, s, t = log.split(':')
# 若为start,则表示新来一个函数,则上一个函数的时间需要减去新来函数的时间
if s == "start":
if stack:
res[stack[-1]] += int(t) - prev
stack.append(int(fid))
prev = int(t)
# 若为end,则栈顶出栈,并更新函数时间
else:
res[stack.pop()] += int(t) - prev + 1
prev = int(t) + 1
return res