LeetCode:2848. 与车的相交点 一次遍历,时间复杂度O(n)

2848. 与车的相交点

today 2848. 与车的相交点

题目描述

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

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

示例 1:

输入:nums = [[3,6],[1,5],[4,7]]

输出:7

解释:从 1 到 7 的所有点都至少与一辆车相交,因此答案为 7 。

示例 2:

示例2:

输入:nums = [[1,3],[5,8]]

输出:7

解释:1、2、3、5、6、7、8 共计 7 个点满足至少与一辆车相交,因此答案为 7 。

提示:

  • 1 <= nums.length <= 100
  • nums[i].length == 2
  • 1 <= starti <= endi <= 100

题目解析

题目要求找出任意部分 覆盖的整数点的数目。那么我们可以维护一个数组arr,表示所有整数点,由于1 <= starti <= endi <= 100,我们数组的长度为101,其中arr[i]表示整数点i是否被车覆盖。

遍历nums,对于每辆车,我们将 s t a r t i start_i starti 到 e n d i end_i endi 之间的整数点都标记为true,即arr[starti] = truearr[endi+1] = true

最后遍历arr,统计true的个数即可。

复杂度分析:

  • 时间复杂度: O ( n ) O(n) O(n)。
  • 空间复杂度: O ( 1 ) O(1) O(1)。

代码实现

C++版本:

cpp 复制代码
class Solution {
public:
    int numberOfPoints(vector<vector<int>>& nums) {
        int n=nums.size();
        int ans=0;
        vector<bool> arr(101,0);
        for(int i=0;i<n;i++){
            for(int j=nums[i][0];j<=nums[i][1];j++){
                if(!arr[j]){
                    ans++;
                    arr[j]=true;
                }
            }
        }
        return ans;
    }
};

Go版本:

go 复制代码
func numberOfPoints(nums [][]int) int { 
    arr:=make([]bool,101)
    ans:=0
    for i:=range(nums){
        for j:=nums[i][0];j<=nums[i][1];j++{
            if(!arr[j]){
                ans++
                arr[j]=true
            }
        }
    }
    return ans
}

Python版本:

python 复制代码
class Solution(object):
    def numberOfPoints(self, nums):
        n=[False]*101
        l=len(nums)
        ans=0
        for i in range(0,l):
            for j in range(nums[i][0],nums[i][1]+1):
                if not n[j]  :
                    ans+=1
                    n[j]=True
        return ans
相关推荐
fie888911 小时前
NSCT(非下采样轮廓波变换)的分解和重建程序
算法
晨晖211 小时前
单链表逆转,c语言
c语言·数据结构·算法
沐雪架构师12 小时前
大模型Agent面试精选15题(第四辑)-Agent与RAG(检索增强生成)结合的高频面试题
面试·职场和发展
YoungHong199212 小时前
面试经典150题[072]:从前序与中序遍历序列构造二叉树(LeetCode 105)
leetcode·面试·职场和发展
im_AMBER13 小时前
Leetcode 78 识别数组中的最大异常值 | 镜像对之间最小绝对距离
笔记·学习·算法·leetcode
鼾声鼾语13 小时前
matlab的ros2发布的消息,局域网内其他设备收不到情况吗?但是matlab可以订阅其他局域网的ros2发布的消息(问题总结)
开发语言·人工智能·深度学习·算法·matlab·isaaclab
LYFlied14 小时前
【每日算法】LeetCode 25. K 个一组翻转链表
算法·leetcode·链表
Swizard14 小时前
别再迷信“准确率”了!一文读懂 AI 图像分割的黄金标尺 —— Dice 系数
python·算法·训练
s090713614 小时前
紧凑型3D成像声纳实现路径
算法·3d·声呐·前视多波束
可爱的小小小狼14 小时前
算法:二叉树遍历
算法