P56合并区间

这题像模拟题

Screenshot 2025-11-06 210726.png

非常简单的一道题目

Screenshot 2025-11-06 210812.png

一共有三种情况

  • 下一个区间的起始小于等于当前的end , 只需要将end取现在和下一个区间的最大值就可以
  • 下一个区间的起始大于当前的end , 需要将当前的{start , end} 加入结果数组,start,end赋值给下一个区间,处理下一个区间
  • 最后处理完的区间,遍历结束之后加入结果数组
class Solution {
public:
    vector<vector<int>> merge(vector<vector<int>>& intervals) {
        int n = intervals.size();
        sort(intervals.begin() , intervals.end());
        int start = intervals[0][0];
        int end = intervals[0][1];
        vector<vector<int>> ans;
        for(int i=1;i<n;i++){
            if(intervals[i][0] > end){
                ans.push_back({start, end});
                start = intervals[i][0];
                end = intervals[i][1];
            }
            if(intervals[i][0] <= end){
                end = max(end , intervals[i][1]);
            }
        }
        ans.push_back({start , end});
        return ans;
    }
};

注意边界哦~ (❁´◡`❁)

迷茫java练习生