3169. Count Days Without Meetings
給你一個數字day表示要從第一天工作到第幾天,和一個陣列表示meeting的日期區間,
求出你的工作日有幾天不需要meeting。
思路:
1.先依照最早開始的meeting排序。
2.然後用一個資料結構儲存區間,把交集的兩兩合併,最後把空的部份加起來。
Java Code:
---------------------------------------------
class Solution {
public int countDays(int days, int[][] meetings) {
Arrays.sort(meetings, Comparator.comparingInt(x -> x[0]));
List<Node> list = new ArrayList<>();
list.add(new Node(meetings[0][0], meetings[0][1]));
for (int i = 1; i < meetings.length; i++) {
int[] meeting = meetings[i];
Node lastNode = list.get(list.size() - 1);
if (meeting[0] > lastNode.last) {
list.add(new Node(meeting[0], meeting[1]));
} else {
lastNode.last = Math.max(lastNode.last, meeting[1]);
}
}
list.add(new Node(days + 1, days + 1));
System.out.println(list);
int res = 0;
int prevDay = 0;
for (Node node : list) {
res += Math.max(0, node.first - prevDay - 1);
prevDay = node.last;
}
return res;
}
}
class Node {
int first;
int last;
public Node(int first, int last) {
this.first = first;
this.last = last;
}
}
---------------------------------------------
我不知道在寫三小
--
https://i.imgur.com/5xKbxoh.jpeg
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.158.101.161 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1742825764.A.F73.html