3
// Time Complexity: O(N) for looping through logs4
// Space Complexity: O(N) for stack6
public int[] exclusiveTime(int n, List<String> logs) {11
int[] result = new int[n];13
Stack<Pair<Integer, Integer>> stack = new Stack<>();15
for (String s : logs) {16
String[] sArr = s.split(":");17
int functionId = Integer.parseInt(sArr[0]);18
String startOrEnd = sArr[1];19
int timestamp = Integer.parseInt(sArr[2]);21
if (startOrEnd.equals("start")) {23
// calculate previous in-progress length25
Pair<Integer, Integer> pair = stack.peek();26
int oldFunctionId = pair.getKey();27
int oldTimestamp = pair.getValue();28
result[oldFunctionId] += timestamp - oldTimestamp;32
stack.push(new Pair(functionId, timestamp));34
// calculate current length35
Pair<Integer, Integer> pair = stack.pop();36
int oldTimestamp = pair.getValue();38
result[functionId] += timestamp - oldTimestamp + 1;40
// reset previous function's start43
Pair<Integer, Integer> replacementPair = new Pair(pair.getKey(), timestamp + 1);44
stack.push(replacementPair);