第二问感觉加个map就可以解决:- public int minMeetingRooms(int[][] intervals) {
- Arrays.sort(intervals, (a, b) -> (a[0] - b[0]));
- PriorityQueue<Pair<Integer, int[]>> pq = new PriorityQueue<>((a, b) -> {
- return a.getValue()[1] - b.getValue()[1];
- });
- pq.add(new Pair<Integer, int[]>(1, intervals[0]));
- Map<Integer, List<int[]>> map = new HashMap<>();
- map.put(0, new ArrayList<>());
- map.get(0).add(intervals[0]);
- for (int i = 1; i < intervals.length; i++) {
- int[] cur = intervals[i];
- int level = pq.size() + 1;
- if (cur[0] >= pq.peek().getValue()[1]) {
- Pair<Integer, int[]> pair = pq.poll();
- level = pair.getKey();
- }
- pq.add(new Pair<Integer, int[]>(level, cur));
- map.putIfAbsent(level, new ArrayList<>());
- map.get(level).add(cur);
- }
-
- for (Map.Entry<Integer, List<int[]>> entry : map.entrySet()) {
- System.out.println("level " + entry.getKey() + " : ");
- for (int[] interval : entry.getValue()) {
- System.out.print(" [" + interval[0] + ", " + interval[1] + "]");
- }
- System.out.println();
- }
- return pq.size();
- }
复制代码 |