Untitled
unknown
java
2 years ago
1.3 kB
9
Indexable
public static List<Integer> getTotalExecutionTime(int n, List<String> logs) {
List<Integer> functionExecutionTimes = new ArrayList<>(Collections.nCopies(n, 0));
Stack<Integer> functionStack = new Stack<>();
int lastTimestamp = 0;
for (String logEntry : logs) {
String[] parts = logEntry.split(":");
int functionId = Integer.parseInt(parts[0]);
String event = parts[1];
int currentTimestamp = Integer.parseInt(parts[2]);
if (event.equals("start")) {
if (functionStack.isEmpty()) {
functionStack.push(functionId);
lastTimestamp = currentTimestamp;
continue;
}
int topFunction = functionStack.peek();
functionExecutionTimes.set(topFunction, functionExecutionTimes.get(topFunction) + currentTimestamp - lastTimestamp);
lastTimestamp = currentTimestamp;
functionStack.push(functionId);
} else {
int poppedFunctionId = functionStack.pop();
functionExecutionTimes.set(poppedFunctionId, functionExecutionTimes.get(poppedFunctionId) + currentTimestamp - lastTimestamp + 1);
lastTimestamp = currentTimestamp + 1;
}
}
return functionExecutionTimes;
}Editor is loading...
Leave a Comment