# Solving Leetcode Interviews in Seconds with AI: Count Days Without Meetings


	# Introduction
	In this blog post, we will explore how to solve the LeetCode problem "3169" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like [Chatmagic](https://www.chatmagic.app), we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.

	# Problem Statement
	> 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  

	# Explanation
	Here's a breakdown of the optimal approach, complexity analysis, and Python code:

*   **Approach:**
    *   Sort the meetings by their start times to efficiently merge overlapping intervals.
    *   Merge overlapping meeting intervals into a consolidated list of busy periods.
    *   Iterate through the merged intervals, summing up the free days between the start and end of the work period and the consolidated meeting schedule.

*   **Complexity:**
    *   Runtime: O(n log n) due to sorting the meetings.
    *   Storage: O(n) in the worst case to store the merged intervals.

	
	# Code
	```python
	def available_days(days: int, meetings: list[list[int]]) -> int:
    """
    Calculates the number of days an employee is available for work given their total working days and meeting schedule.

    Args:
        days: The total number of days the employee is available for work.
        meetings: A list of meetings, where each meeting is a list of two integers representing the start and end days.

    Returns:
        The number of days when the employee is available for work but no meetings are scheduled.
    """

    meetings.sort()  # Sort meetings by start time
    merged_meetings = []
    if meetings:
        merged_meetings.append(meetings[0])

        for i in range(1, len(meetings)):
            current_meeting = meetings[i]
            last_merged_meeting = merged_meetings[-1]

            if current_meeting[0] <= last_merged_meeting[1]:
                # Overlapping meetings, merge them
                last_merged_meeting[1] = max(last_merged_meeting[1], current_meeting[1])
            else:
                # Non-overlapping meetings, add the current meeting to the merged list
                merged_meetings.append(current_meeting)

    available_days_count = days
    for meeting in merged_meetings:
        available_days_count -= (meeting[1] - meeting[0] + 1)

    return available_days_count
	```
			
