|
41 | 41 | 1 <= n <= 100
|
42 | 42 | */
|
43 | 43 | public class _636 {
|
44 |
| - /**Based on the example, it's difficult to see how function 2 executes 4 units of time, actually |
45 |
| - * we can add 1 to all end times to make it easier to understand and AC'ed.*/ |
46 |
| - public int[] exclusiveTime(int n, List<String> logs) { |
47 |
| - /**Stack is the way to go: |
48 |
| - * we keep pushing the logId onto the stack whenever we just encounter this logId's start timestamp, |
49 |
| - * we'll pop this logId only when we encounter this logId's end timestamp. |
50 |
| - * Meanwhile, we keep a counter called prevTime, |
51 |
| - * whenever the stack is not empty, we'll always deduct prevTime from the last logId on the stack.*/ |
52 |
| - Deque<Integer> stack = new LinkedList<>(); |
53 |
| - int[] result = new int[n]; |
54 |
| - int prevTime = 0; |
55 |
| - for (String log : logs) { |
56 |
| - String[] parts = log.split(":"); |
57 |
| - if (!stack.isEmpty()) { |
58 |
| - result[stack.peek()] += Integer.parseInt(parts[2]) - prevTime; |
59 |
| - } |
60 |
| - prevTime = Integer.parseInt(parts[2]); |
61 |
| - if (parts[1].equals("start")) { |
62 |
| - stack.addFirst(Integer.parseInt(parts[0]));//i.e. stack.push() |
63 |
| - } else { |
64 |
| - prevTime++; |
65 |
| - //remember to have result pluse 1 to match the problem AC criteria |
66 |
| - result[stack.pollFirst()]++;//i.e. stack.pop() |
| 44 | + public static class Solution1 { |
| 45 | + /** |
| 46 | + * Based on the example, it's difficult to see how function 2 executes 4 units of time, actually |
| 47 | + * we can add 1 to all end times to make it easier to understand and AC'ed. |
| 48 | + */ |
| 49 | + public int[] exclusiveTime(int n, List<String> logs) { |
| 50 | + /**Stack is the way to go: |
| 51 | + * we keep pushing the logId onto the stack whenever we just encounter this logId's start timestamp, |
| 52 | + * we'll pop this logId only when we encounter this logId's end timestamp. |
| 53 | + * Meanwhile, we keep a counter called prevTime, |
| 54 | + * whenever the stack is not empty, we'll always deduct prevTime from the last logId on the stack.*/ |
| 55 | + Deque<Integer> stack = new LinkedList<>(); |
| 56 | + int[] result = new int[n]; |
| 57 | + int prevTime = 0; |
| 58 | + for (String log : logs) { |
| 59 | + String[] parts = log.split(":"); |
| 60 | + if (!stack.isEmpty()) { |
| 61 | + result[stack.peek()] += Integer.parseInt(parts[2]) - prevTime; |
| 62 | + } |
| 63 | + prevTime = Integer.parseInt(parts[2]); |
| 64 | + if (parts[1].equals("start")) { |
| 65 | + stack.addFirst(Integer.parseInt(parts[0]));//i.e. stack.push() |
| 66 | + } else { |
| 67 | + prevTime++; |
| 68 | + //remember to have result pluse 1 to match the problem AC criteria |
| 69 | + result[stack.pollFirst()]++;//i.e. stack.pop() |
| 70 | + } |
67 | 71 | }
|
| 72 | + return result; |
68 | 73 | }
|
69 |
| - return result; |
70 | 74 | }
|
71 | 75 | }
|
0 commit comments