Leetcode2848:与车相交的点

题目描述:

给你一个下标从 0 开始的二维整数数组 nums 表示汽车停放在数轴上的坐标。对于任意下标 inums[i] = [starti, endi] ,其中 starti 是第 i 辆车的起点,endi 是第 i 辆车的终点。

返回数轴上被车 任意部分 覆盖的整数点的数目。

代码思路:

  1. 排序
    • 首先,对输入的二维数组 nums 进行排序,排序的依据是每辆车的起点 starti。这样做的目的是为了能够按顺序处理车辆,使得我们可以有效地跟踪当前被覆盖的数轴区间。
  2. 初始化变量
    • m 初始化为第一辆车的终点 endi,表示当前被覆盖区间的上限。
    • n 初始化为第一辆车的起点 starti,表示当前被覆盖区间的下限。
    • ans 初始化为 0,用于存储最终被覆盖的整数点的数目。
  3. 遍历处理
    • 遍历排序后的车辆数组 sorted_array
    • 对于每一辆车,检查它的起点 sorted_array[i][0] 是否在当前被覆盖区间内(即是否小于等于 m)。
      • 如果是,说明这辆车与当前覆盖区间有重叠部分,因此更新 m 为当前覆盖区间和这辆车终点中较大的那个,以扩展覆盖区间。
      • 如果不是,说明这辆车与当前覆盖区间没有重叠,那么需要计算当前覆盖区间的长度并累加到 ans 中,然后更新 mn 为这辆车的终点和起点,以开始一个新的覆盖区间。
  4. 计算最后一个区间的长度
    • 遍历结束后,需要再加上最后一个覆盖区间的长度,因为在循环中最后一次更新 ans 是在找到一个不与当前区间重叠的新区间时,而最后一个区间之后没有新的区间来触发这个更新。
  5. 返回结果
    • 返回 ans,即数轴上被车辆任意部分覆盖的整数点的总数。

代码实现:

复制代码
class Solution:
    def numberOfPoints(self, nums: List[List[int]]) -> int:
        sorted_array = sorted(nums, key=lambda x: x[0])
        m=sorted_array[0][1] 
        n=sorted_array[0][0]
        ans=0
        # print(sorted_array)
        for i in range(len(sorted_array)):
            if sorted_array[i][0]<=m:
                #相交,保存最大的上限
                m=max(m,sorted_array[i][1])
            else:
                #计算长度
                ans+=(m-n+1)
                #保存新的上下限
                m=sorted_array[i][1]
                n=sorted_array[i][0] 
                       
        return ans+(m-n+1)
相关推荐
土司大王16 分钟前
LeetCode hot100——35.搜索插入位置:Java 二分模板、左闭右开区间与插入点分析
java·算法·leetcode
微三云生态系统架构师-彭丹33 分钟前
远方好物S2B2C系统架构:一级分销与保证金托管的合规技术实现
人工智能·算法
土司大王39 分钟前
LeetCode hot100——34.在排序数组中查找元素的第一个和最后一个位置:Java 二分模板、边界分析
java·算法·leetcode
罗西的思考2 小时前
机器人模型(WM / WAM / VLA)综合分析与对比:从「看」到「想」再到「做」
人工智能·算法·机器学习
小哈里3 小时前
【知识】从学科到实践:自然・工程・社科・人文|算法・研发・产品・品牌设计
程序人生·算法·产品·设计·工程
小π军4 小时前
最大重叠区间数量
数据结构·算法
镜像视界(浙江)科技有限公司4 小时前
《视频孪生之上:二维展示终结,三维空间计算重构城市逻辑》——跨摄像连续表达 × 三角测量厘米级定位 × 动态轨迹建模,构建新一代城市空间
大数据·人工智能·算法·矩阵·音视频·空间计算
a187927218315 小时前
【算法】双指针与滑动窗口(二):滑动窗口——吃进、判定、吐出
算法·leetcode·双指针·滑动窗口·原理·模板·算法讲解
铭哥的编程日记5 小时前
从一道 LeetCode Hard 到吃透一类题:加权区间调度「排序 + 二分 + DP」
算法·leetcode·职场和发展
Navigator_Z5 小时前
LeetCode //C - 1248. Count Number of Nice Subarrays
c语言·算法·leetcode