Medium
这题卡在一个地方挺久,就是"1:end:5","0:end:6"
这样子的情况下,后面的任务0其实只持续了1 time, 要怎么处理?后来看了答案受了启发,只需要再遇到end的时候,把prevTime update到time – 1, 就是这段代码:
else if (arr[1].equals("end")){
res[stack.pop()] += time - prevTime + 1;
prevTime = time + 1;
}
这种细节自己写想不到怎么处理
class Solution {
public int[] exclusiveTime(int n, List<String> logs) {
int[] res = new int[n];
Stack<Integer> stack = new Stack<>();
int prevTime = 0;
for (String log : logs){
String[] arr = log.split(":");
int id = Integer.parseInt(arr[0]);
int time = Integer.parseInt(arr[2]);
if (arr[1].equals("start")){
if (!stack.isEmpty()){
res[stack.peek()] += time - prevTime;
}
prevTime = time;
stack.push(id);
} else if (arr[1].equals("end")){
res[stack.pop()] += time - prevTime + 1;
prevTime = time + 1;
}
}
return res;
}
}