2025-03-24 Daily Challenge

Today I have done leetcode's March LeetCoding Challenge with cpp.

March LeetCoding Challenge 24

Description

Count Days Without Meetings

You are given a positive integer days representing the total number of days an employee is available for work (starting from day 1). You are also given a 2D array meetings of size n where, meetings[i] = [start_i, end_i] represents the starting and ending days of meeting i (inclusive).

Return the count of days when the employee is available for work but no meetings are scheduled.

Note: The meetings may overlap.

 

Example 1:

Input: days = 10, meetings = [[5,7],[1,3],[9,10]]

Output: 2

Explanation:

There is no meeting scheduled on the 4th and 8th days.

Example 2:

Input: days = 5, meetings = [[2,4],[1,3]]

Output: 1

Explanation:

There is no meeting scheduled on the 5th day.

Example 3:

Input: days = 6, meetings = [[1,6]]

Output: 0

Explanation:

Meetings are scheduled for all working days.

 

Constraints:

  • 1 <= days <= 109
  • 1 <= meetings.length <= 105
  • meetings[i].length == 2
  • 1 <= meetings[i][0] <= meetings[i][1] <= days

Solution

class Solution {
public:
  int countDays(int days, vector<vector<int>>& meetings) {
    int lastZero = 0;
    map<int, int> count;
    for(auto &m : meetings) {
      count[m[0]] += 1;
      count[m[1]] -= 1;
    }
    int answer = 0;
    int meetingCount = 0;
    for(const auto &[time, c] : count) {
      if(time > days) break;
      if(!meetingCount) answer += max(0, time - lastZero - 1);
      meetingCount += c;
      if(!meetingCount) lastZero = time;
    }
    if(!meetingCount) answer += max(0, days - lastZero);
    return answer;
  }
};

// Accepted
// 578/578 cases passed (190 ms)
// Your runtime beats 14.19 % of cpp submissions
// Your memory usage beats 7.44 % of cpp submissions (160.2 MB)