c_cpp 如果你有一个约会列表(每个约会有一个开始时间,一个结束时间和一个布尔值hasConflict),你将如何有效地g

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 如果你有一个约会列表(每个约会有一个开始时间,一个结束时间和一个布尔值hasConflict),你将如何有效地g相关的知识,希望对你有一定的参考价值。

/*
If you had a list of appointments (each appointment has a begin time, an end time, and a boolean hasConflict), how would you efficiently go through them and set the hasConflict boolean for each. You cannot assume they are sorted in any way. Keep in mind that one appointment may be very long, etc.
*/

struct appointment {
    int begin, end;
    bool has_conflict;
}

bool is_overlap(appointment &a, appointment &b) {
    if(a.end < b.begin || a.begin > b.end) return false;
    return true;
}

// solution 1, brute force. compare every pair.

void update(vector<appointment>& va) {
    if(va.empty()) return;
    for(int i=0; i<va.size()-1; i++) {
        for(int j=i+1; j<va.size(); j++) {
            if(va[j].has_conflict == false && is_overlap(va[i], va[j]) == true)
                va[i].has_conflict = va[j].has_conflict = true;
        }
    }
}

void update_better(vector<appointment>& va) {
    if(va.empty()) return;
    sort(va.begin(), va.end(), [](appointment& a, appointment&b) { return a.begin < b.begin; } );
    for(int i=0; i<va.size()-1; i++) {
        for(int j=i+1; j<va.size(); j++) {
            if(is_overlap(va[i], va[j]) == false) break;
            else if(va[j].has_conflict == false) {
                va[i].has_conflict = va[j].has_conflict = true;
            }
        }
    }
}




以上是关于c_cpp 如果你有一个约会列表(每个约会有一个开始时间,一个结束时间和一个布尔值hasConflict),你将如何有效地g的主要内容,如果未能解决你的问题,请参考以下文章

VBA 无法发送日历约会

有没有办法从用户创建的下拉列表中选择 Outlook 中的约会和会议位置?

P4556 [Vani有约会]雨天的尾巴(线段树合并)

添加下一个约会日期

C# periodsssss [重复]

限制每个用户一个约会