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, nums[i] = [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

nums[i].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;
    }
}
相关推荐
倔强的石头_6 分钟前
【数据结构与算法 经典例题】使用队列实现栈(图文详解)
后端·算法
黑色的山岗在沉睡24 分钟前
P1216 [IOI 1994] 数字三角形 Number Triangles
算法·动态规划
青山是哪个青山1 小时前
递归,回溯,DFS,Floodfill,记忆化搜索
算法·深度优先
一块plus1 小时前
参与、拥有、共创:Web3 游戏开启玩家共建时代
算法·程序员·架构
倔强的石头_1 小时前
【数据结构与算法】插入排序:原理、实现与分析
算法
倔强的石头_1 小时前
【数据结构与算法】希尔排序:基于插入排序的高效排序算法
后端·算法
Shaun_青璇2 小时前
CPP基础(2)
开发语言·c++·算法
红糖生姜2 小时前
字符串|数组|计算常见函数整理-竞赛专用(从比赛真题中总结的,持续更新中)
c++·算法
焜昱错眩..3 小时前
代码随想录训练营二十六天| 654.最大二叉树 617.合并二叉树 700.二叉搜索树的搜索 98.验证二叉搜索树
数据结构·算法
jndingxin3 小时前
OpenCV CUDA模块中用于稠密光流计算的 TV-L1(Dual TV-L1)算法类cv::cuda::OpticalFlowDual_TVL1
人工智能·opencv·算法