天天看點

Merge Intervals 合并區間

#include

#include

#include

using namespace std;

struct Item

{

int start;

int end;

};

bool cmp(Item &it1, Item &it2)

{

return it1.start<it2.start;

}

int maxT(int a, int b)

{

if (a > b)

{

return a;

}

return b;

}

vector MergeIntervals(vector &vectItem)

{

vector res;

int start = vectItem[0].start;

int end = vectItem[0].end;

for (int i = 1; i < vectItem.size(); i++)

{

if (end < vectItem[i].start)

{

res.push_back({ start,end });

start = vectItem[i].start;

end = vectItem[i].end;

}

else

{

end = maxT(end, vectItem[i].end);

}

}
res.push_back({ start,end });
return res;
           

}

int main()

{

//vector vectItem{ {1,3},{2,6},{8,10},{15,18},{7,9},{12,14} };

vector vectItem{ {1,4},{4,6} };

sort(vectItem.begin(), vectItem.end(), cmp);

vector vecitems = MergeIntervals(vectItem);

system(“pause”);

return 0;

}

繼續閱讀