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
相关推荐
m0_57046641几秒前
代码随想录算法训练营第二十八天 | 买卖股票的最佳实际、跳跃游戏、K次取反后最大化的数组和
java·开发语言·算法
吃着火锅x唱着歌7 分钟前
LeetCode 1537.最大得分
算法·leetcode·职场和发展
数模加油站8 分钟前
25高教社杯数模国赛【C题超高质量思路+可运行代码】第十弹
算法·数学建模·数模国赛·高教社杯全国大学生数学建模竞赛
零千叶20 分钟前
【面试】RabbitMQ 常见问题
面试·职场和发展·rabbitmq
ulias21222 分钟前
动态规划入门:从记忆化搜索到动态规划
算法·动态规划
山河君22 分钟前
webrtc之语音活动上——VAD能量检测原理以及源码详解
算法·音视频·webrtc·信号处理
THMAIL44 分钟前
深度学习从入门到精通 - LSTM与GRU深度剖析:破解长序列记忆遗忘困境
人工智能·python·深度学习·算法·机器学习·逻辑回归·lstm
JuneXcy1 小时前
结构体简介
c语言·数据结构·算法
要做朋鱼燕1 小时前
【C++】 priority_queue 容器模拟实现解析
开发语言·c++·笔记·职场和发展
jiaway1 小时前
【C语言】第四课 指针与内存管理
c语言·开发语言·算法