2848、[简单] 与车相交的点1、题目描述给你一个下标从0开始的二维整数数组nums表示汽车停放在数轴上的坐标。对于任意下标inums[i] [starti, endi]其中starti是第i辆车的起点endi是第i辆车的终点。返回数轴上被车任意部分覆盖的整数点的数目。2、解题思路排序和合并区间首先对汽车坐标区间进行排序使得区间按照起点从小到大排列。然后通过遍历排序后的区间来合并重叠的区间。合并的过程是如果当前区间的起点在已合并区间的终点之后说明没有重叠直接添加新的区间否则更新已合并区间的终点。计算覆盖点数合并完所有区间后计算每个合并后的区间所覆盖的整数点数并累加到结果中。3、代码实现class Solution { public: int numberOfPoints(vectorvectorint nums) { if (nums.size() 0) { return 0; // 如果没有汽车返回0 } vectorvectorint ans; // 用于存储合并后的区间 sort(nums.begin(), nums.end()); // 按区间起点进行排序 ans.push_back(nums[0]); // 将第一个区间加入结果集 for (int i 1; i nums.size(); i) { if (ans.back()[1] nums[i][0]) { // 当前区间与最后一个合并区间不重叠添加新的区间 ans.push_back(nums[i]); } else { // 合并区间更新终点 ans.back()[1] max(ans.back()[1], nums[i][1]); } } int ret 0; // 结果变量 for (const auto v : ans) { // 计算每个合并后区间的覆盖点数 ret v[1] - v[0] 1; } return ret; // 返回被覆盖的整数点数 } };4、复杂度分析时间复杂度O(n log n)主要是排序的时间复杂度其中n是汽车的数量。空间复杂度O(n)用于存储合并后的区间。