У меня есть цикл while, который принимает вектор и должен объединять интервалы. Например,
Input: [[2,3],[2,2],[3,3],[1,3],[5,7],[2,2],[4,6]]
Output: [[1,3],[4,7]]
Другой пример:
Input: [[1,4],[4,5]]
Output: [[1,5]]
У меня есть фрагмент кода, который находит все общие интервалы, которые лежат рядом друг с другом, объединяет их, а затем просматривает следующуюэлемент в строке:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
sort(intervals.begin(), intervals.end(),
[](vector<int> A, vector<int> B){return A[0] < B[0];});
int i{};
while (i++ < intervals.size()) {
while (intervals.size() >= 2 && intervals[i][1] >= intervals[i+1][0]) {
intervals[i+1] = {min(intervals[i][0], intervals[i+1][0]),
max(intervals[i][1], intervals[i+1][1])};
intervals.erase(intervals.begin() + i);
}
printResult(intervals);
}
return intervals;
}
Мой STDOUT следующий:
[1 3 ]
[4 6 ]
[5 7 ]
Segmentation fault (core dumped)
Ответ должен быть
[1 3 ]
[4 7 ]
, но мой цикл while потерпел крах после первой итерации.
Я не уверен, почему это происходит, и буду признателен, если кто-нибудь скажет мне, в чем заключается проблема в моем коде.
Спасибо!