Untitled

 avatar
unknown
plain_text
a month ago
1.5 kB
1
Indexable
import java.util.*;

class Solution {
    public List<Integer> maxMeetings(int[] start, int[] end, int n) {
        // Create a list of meetings with start, end, and index
        List<int[]> meetings = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            meetings.add(new int[]{start[i], end[i], i + 1}); // Store index as 1-based
        }

        // Sort meetings by their end times, and by index if end times are the same
        meetings.sort((a, b) -> a[1] == b[1] ? Integer.compare(a[2], b[2]) : Integer.compare(a[1], b[1]));

        // Select meetings
        List<Integer> result = new ArrayList<>();
        int[] prev = meetings.get(0); // Select the first meeting
        result.add(prev[2]); // Add its index to the result

        for (int i = 1; i < meetings.size(); i++) {
            int[] cur = meetings.get(i);

            // Check if the current meeting starts after the previous one ends
            if (cur[0] > prev[1]) {
                result.add(cur[2]); // Add the current meeting's index
                prev = cur; // Update prev to the current meeting
            }
        }

        return result;
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        int N = 6;
        int[] start = {1, 3, 0, 5, 8, 5};
        int[] end = {2, 4, 5, 7, 9, 9};

        List<Integer> order = solution.maxMeetings(start, end, N);
        for (int i : order) {
            System.out.print(i + " ");
        }
    }
}
Editor is loading...
Leave a Comment