最少数量线段覆盖-华为OD

系列文章目录


前言

本人最近再练习算法,所以会发布一些解题思路,希望大家多指教

一、题目描述

给定坐标轴上的一组线段,线段的起点和终点均为整数并且长度不小于1,请你从中找到最少数量的线段,这些线段可以覆盖住所有线段。

二、输入描述

第一行输入为所有线段的数量,不超过10000,后面每行表示一条线段,格式为"x,y",x和y分别表示起点和终点,取值范围是[-105,105]。

三、输出描述

最少线段数量,为正整数。

四、java代码

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = Integer.parseInt(sc.nextLine());
        List<int[]> list = new ArrayList<>();
        for (int i = 0; i < N; i++) {
            String[] split = sc.nextLine().split(" ");
            list.add(new int[]{Integer.parseInt(split[0]), Integer.parseInt(split[1])});
        }
        //按照线段的左侧下标进行正序排序,相同时,按照右侧下标正序排序
        list.sort(((o1, o2) -> {
            if (o1[0]==o2[0]) {
                return o1[1] - o2[1];
            } else {
                return o1[0] - o2[0];
            }
        }));
        //初始化线段数量,默认都无法完成覆盖
        int num = list.size();
        for (int i = 0; i < list.size(); i++) {
            int[] ints = list.get(i);
            if(i+1 <list.size()){
                //情况一:如果两个线段左侧下标相同,因为前面已经进行排序,所以后面的一定可以覆盖当前线段
                if(ints[0] == list.get(i+1)[0]){
                    num--;
                } else if(ints[1] >= list.get(i+1)[1]){
                    //情况二:如果右侧下标相同,则当前线段的一定可以覆盖下一个线段
                    num--;
                    //将下一个覆盖的线段的右侧下标进行延伸,继续向后比较
                    list.get(i+1)[1] = ints[1];
                }
            }
        }
        System.out.println(num);
    }

五、测试用例

输入:
6
15 20
3 6
8 12
1 7
11 15
18 20
在这里插入图片描述

相关推荐

  1. 2024最新华为OD算法题目

    2024-05-11 18:04:03       9 阅读
  2. 华为OD机试-螺旋数字矩阵

    2024-05-11 18:04:03       15 阅读
  3. 华为OD机试2024年最新题库(C++)

    2024-05-11 18:04:03       62 阅读
  4. 华为od机试真题——找磨损度最高最低的硬盘

    2024-05-11 18:04:03       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-11 18:04:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-11 18:04:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-11 18:04:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-11 18:04:03       20 阅读

热门阅读

  1. OceanBase OAT安装

    2024-05-11 18:04:03       13 阅读
  2. 单播、组播、广播

    2024-05-11 18:04:03       9 阅读
  3. PYTHON利用实时交易量智能股票交易系统

    2024-05-11 18:04:03       14 阅读
  4. MYSQL SQL优化思路和方法

    2024-05-11 18:04:03       19 阅读
  5. fastapi数据库连接池的模版

    2024-05-11 18:04:03       15 阅读
  6. D3.js实战:数据可视化高级技巧实例应用

    2024-05-11 18:04:03       16 阅读
  7. idea

    idea

    2024-05-11 18:04:03      15 阅读
  8. postman---认证(Certificates)是什么作用?

    2024-05-11 18:04:03       12 阅读
  9. git命令详解+使用样例

    2024-05-11 18:04:03       17 阅读
  10. 代码随想录训练营Day29:动态规划1

    2024-05-11 18:04:03       16 阅读
  11. 高德地图定位点缩放偏移问题

    2024-05-11 18:04:03       14 阅读
  12. 安卓实现连接wesokcet

    2024-05-11 18:04:03       16 阅读