Untitled
unknown
java
2 years ago
1.3 kB
6
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