LeetCode 2848. Points That Intersect With Cars

You are given a 0-indexed 2D integer array nums representing the coordinates of the cars parking on a number line. For any index i, numsi = starti, endi where starti is the starting point of the ith car and endi is the ending point of the ith car.

Return the number of integer points on the line that are covered with any part of a car.

Example 1:

Input: nums = \[3,6,1,5,4,7]

Output: 7

Explanation: All the points from 1 to 7 intersect at least one car, therefore the answer would be 7.

Example 2:

Input: nums = \[1,3,5,8]

Output: 7

Explanation: Points intersecting at least one car are 1, 2, 3, 5, 6, 7, 8. There are a total of 7 points, therefore the answer would be 7.

Constraints:

1 <= nums.length <= 100

numsi.length == 2

1 <= starti <= endi <= 100


这题给了一个array of intervals,求这些intervals里cover了多少个数字。

第一反应就是拿个set来存放所有的数字,最后return size。非常简单。

复制代码
class Solution {
    public int numberOfPoints(List<List<Integer>> nums) {
        Set<Integer> set = new HashSet<>();
        for (List<Integer> num : nums) {
            for (int i = num.get(0); i <= num.get(1); i++) {
                set.add(i);
            }
        }
        return set.size();
    }
}

然后就是这题也算是和interval相关的,就也可以考虑一下line sweep。按照meeting room2的套路,搞了个数组表示所有的points,开头++,结尾--,结果就踩坑了。因为之前的meeting room是结束时间相当于是exclusive的,但这里如果是1,3的话需要同时考虑1、2、3相当于是inclusive的。所以刚开始简单粗暴的以为只要在算sum的时候判断如果当前这个point值为-1的话也可以result++。结果没想到还是漏了一种情况,就是1,1的时候这里也算一个,但是point的值为0。所以最后看了答案才发现可以在构造points数组的时候在结束+1的时间点再--就可以解决这个问题了。

复制代码
class Solution {
    public int numberOfPoints(List<List<Integer>> nums) {
        int[] points = new int[101];
        for (List<Integer> num : nums) {
            points[num.get(0) - 1]++;
            points[num.get(1)]--;
        }
        int result = 0;
        int prefixSum = 0;
        for (int point : points) {
            prefixSum += point;
            if (prefixSum > 0) {
                result++;
            }
        }
        return result;
    }
}
相关推荐
云泽80820 小时前
C++ 可调用对象通关指南:深度解析 Lambda 表达式、function 包装器与 bind 绑定器
开发语言·c++·算法
wlsh1520 小时前
Go 迭代器
算法
语戚21 小时前
力扣 3161. 块放置查询:线段树解法(Java 实现)
java·算法·leetcode·面试·线段树·力扣·
CS创新实验室21 小时前
从顺序表到动态数组:数据结构的永恒基石与现代语言的优雅封装
数据结构·算法
Black蜡笔小新1 天前
自动化AI算法训练服务器DLTM训推一体化平台助力农业生产管理实现安全智能化
人工智能·算法·自动化
8Qi81 天前
LeetCode 23. 合并 K 个升序链表 —— 小顶堆(PriorityQueue)
数据结构·算法·leetcode·链表·
QiLinkOS1 天前
《打破“用爱发电”:一种基于 Gitee 与时间戳的开源权益分配机制探索》
c语言·数据结构·c++·科技·算法·gitee·开源
松间听晚1 天前
Agentic RL 环境和代码学习:以HGPO为例
算法
智者知已应修善业1 天前
【51单片机用T0定时器方式1,实现0.5S的时间间隔实现第一次一个灯亮、第二次二个灯亮,直到全部灯亮,然后重复整个过程】2023-12-29
c++·经验分享·笔记·算法·51单片机
小许同学记录成长1 天前
几何体编辑与布尔运算
算法·无人机