Skip to content

3169. Count Days Without Meetings 👍

  • Time: $O(\texttt{sort})$
  • Space: $O(\texttt{sort})$
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
class Solution {
 public:
  int countDays(int days, vector<vector<int>>& meetings) {
    int freeDays = 0;
    int prevEnd = 0;

    ranges::sort(meetings);

    for (const vector<int>& meeting : meetings) {
      const int start = meeting[0];
      const int end = meeting[1];
      if (start > prevEnd)
        freeDays += start - prevEnd - 1;
      prevEnd = max(prevEnd, end);
    }

    return freeDays + max(0, days - prevEnd);
  }
};
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
class Solution {
  public int countDays(int days, int[][] meetings) {
    int freeDays = 0;
    int prevEnd = 0;

    Arrays.sort(meetings, (a, b) -> Integer.compare(a[0], b[0]));

    for (int[] meeting : meetings) {
      final int start = meeting[0];
      final int end = meeting[1];
      if (start > prevEnd)
        freeDays += start - prevEnd - 1;
      prevEnd = Math.max(prevEnd, end);
    }

    return freeDays + Math.max(0, days - prevEnd);
  }
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
class Solution:
  def countDays(self, days: int, meetings: list[list[int]]) -> int:
    freeDays = 0
    prevEnd = 0

    for start, end in sorted(meetings):
      if start > prevEnd:
        freeDays += start - prevEnd - 1
      prevEnd = max(prevEnd, end)

    return freeDays + max(0, days - prevEnd)