
解题思路:该题目类似于活动安排问题,先按照结束时间的长短进行排序,结束时间短的排在前面,在根据后一个
活动的开始时间要比前一个活动的结束时间要晚的原则,从前向后筛选即可。
public int eraseOverlapIntervals(Interval[] intervals)
{
int n = intervals.length;
int ncount = 0;
// 排序
for(int i=0; i<n; i++)
{
for (int j=i+1; j<n; j++)
{
// 结束时间早的排在前面
if (intervals[j].end < intervals[i].end)
{
swap(intervals[i], intervals[j]);
}
}
}
int k = 0;
for (int i=1; i<n; i++)
{
if(intervals[i].start >= intervals[k].end)
{
k = i;
}
else
{
// 有重叠部分
ncount++;
}
}
return ncount;
}

本文详细解析了如何通过排序和筛选策略解决活动安排问题,确保每个活动不发生时间上的冲突,适用于日程管理、资源调度等场景。文章通过具体代码示例展示了如何实现这一算法,包括按结束时间排序和检查后续活动是否与当前活动冲突的过程。

2125

被折叠的 条评论
为什么被折叠?



