算法:函数的独占时间

tech2025-01-09  9

昨晚通宵发版,导致今天状态很差。思路有点乱…… 这个题目来自LeetCode 636. 函数的独占时间 题目不复制了

题解: 理解题意:函数的调用,代表函数一定是闭合的。也就是说,子函数结束之前,母函数一定是没有结束的。母函数的结束一定在子函数结束之后。

这个解法,巧妙的地方在于casttime的运用。这样,栈顶元素运行的时间,就相当于 当前时间 - 已结束进程消耗的时间 - 该进程开始的时间。 当前结束进程运行的时间,相当于当前进程开始运行的时间 – 一直到当前时间。

class Solution: def exclusiveTime(self, n: int, logs: List[str]) -> List[int]: res = [0]*n stack = [] for log in logs: id,flag,time = log.split(':') if flag=='end': castTime = 0 while stack and stack[-1][0] == 'casttime': _,t = stack.pop() castTime+=t curID,curTime = stack.pop() res[curID] += int(time) - castTime -curTime +1 stack.append(('casttime',int(time)-curTime+1)) else: stack.append((int(id),int(time))) return res
最新回复(0)