"to find all the overlapping date ranges from a given list of date ranges" Code Answer

1

here's o(nlog(n)), or obviously if there are lots of collisions, it's o(number of collisions). a company i used to work for used something similar to this as an interview question.

private static class bookingtuple implements comparable<bookingtuple> {
    public final date date;
    public final boolean isstart;
    public final int id;
    public bookingtuple(date date, boolean isstart, int id) {
        this.date = date;
        this.isstart = isstart;
        this.id = id;
    }

    @override
    public int compareto(bookingtuple other) {
        int datecompare = date.compareto(other.date);
        if (datecompare != 0) {
            return datecompare;
        } else {
            if (!isstart && other.isstart) {
                return -1;
            } else if (isstart && !other.isstart) {
                return 1;
            } else {
                return 0;
            }
        }
    }
}

public static boolean isoverlappingdates(list<bookingdaterange> daterangelist, list<string> overlappingdatepairs) {
    list<bookingtuple> list = new arraylist<bookingtuple>();
    for (int i = 0; i < daterangelist.size(); i++) {
        date from = daterangelist.get(i).getfromdate();
        date to = daterangelist.get(i).gettodate();
        list.add(new bookingtuple(from, true, i));
        list.add(new bookingtuple(to, false, i));
    }

    collections.sort(list);

    boolean overlap = false;

    hashset<integer> active = new hashset<integer>();
    for (bookingtuple tuple : list) {
        if (!tuple.isstart) {
            active.remove(tuple.id);
        } else {
            for (integer n : active) {
                overlappingdatepairs.add(n + "_" + tuple.id);
                overlap = true;
            }
            active.add(tuple.id);
        }
    }

    return overlap;
}
By Moldova on March 14 2022

Answers related to “to find all the overlapping date ranges from a given list of date ranges”

Only authorized users can answer the Search term. Please sign in first, or register a free account.