Skip to content

Instantly share code, notes, and snippets.

@sopherwang
Created September 14, 2014 23:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sopherwang/0cd882572f31c48782fd to your computer and use it in GitHub Desktop.
Save sopherwang/0cd882572f31c48782fd to your computer and use it in GitHub Desktop.
Merge Intervals
public ArrayList<Interval> merge(ArrayList<Interval> intervals)
{
ArrayList<Interval> result = new ArrayList<Interval>();
if ((intervals == null) || (intervals.size() == 0))
return result;
Comparator<Interval> comparator = new Comparator<Interval>()
{
@Override
public int compare(Interval i1, Interval i2)
{
if (i1.start < i2.start)
{
return -1;
}
else if (i1.start > i2.start)
{
return 1;
}
else
{
if (i1.end < i2.end)
{
return -1;
}
else if (i1.end > i2.end)
{
return 1;
}
else
{
return 0;
}
}
}
};
Collections.sort(intervals, comparator);
for (int i = 0; i < intervals.size(); i++)
{
Interval cur = intervals.get(i);
if (result.isEmpty())
{
result.add(cur);
}
else
{
Interval last = result.get(result.size() - 1);
if (last.end >= cur.start)
{
last.end = Math.max(last.end, cur.end);
}
else
{
result.add(cur);
}
}
}
return result;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment