java实现合并多个线段,计算多个线段的实际覆盖长度_java 多条线段合并为一条线-程序员宅基地

技术标签: 算法  

算法: 计算多个线段实际覆盖的长度。
例如:
线段组1:{ {1, 2}, {2, 3}, {3, 5}, {4, 10.5}, {11, 13}}的长度为
[1,10.5],[11,13]的长度为11.5;

线段组2:{ {1, 5}, {4, 5}, {0.7, 6}, {0.9, 1.5}}的长度为[0.7,6]的长度为5.3;

思路分析:
1.由题意知道: 要求实际长度,凡是两个线段有重叠的地方我们都需要合并
2.这里采用双重遍历分别拿数组的第1个值跟第二个比较,拿线段组1举例,
第一次是用{1,2},{2,3}比较,发现重叠线段,合并成{1,3}。此时线段组1{ {1, 3}, {3, 5}, {4, 10.5}, {11, 13}}
3.重置循环,第二次拿{1, 3}, {3, 5}比较,合并成{1,5}。以此类推,最终合并后的线段组1{ {1,10.5},{11,13}}
4.遍历线段组1并累加求和输出结果: 11.5

那么代码片如下:

   public static double coverageLength(double[][] nums) {
   
    
        List<double[]> list = new LinkedList<>();
        for (int i = 0; i < nums.length; i++) {
   
    
            list.add(nums[i]);
        }

        for (int i = 0; i < list.size(); i++) {
   
    
            for (int j = i + 1; j < list.size(); j++
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_41788067/article/details/104059001

智能推荐

华为v系列服务器,服务器的v码-程序员宅基地

文章浏览阅读599次。服务器的v码 内容精选换一换给指定的备份策略添加一个标签。URI格式POST /v2/{project_id}/backuppolicy/{policy_id}/tagsPOST /v2/{project_id}/backuppolicy/{policy_id}/tags参数说明参数是否必选描述project_id是项目IDpolicy_id是策略ID参数说明参数是根据给定的裸金属服务器ID列表,..._vjum

汽车标定技术(十)--从CPU角度观察Overlay实现原理_mcu的overlay-程序员宅基地

文章浏览阅读1.8k次,点赞20次,收藏28次。我们从CPU视角分析了主流汽车芯片对于标定测量功能的支持程度,其实很容易发现一些端倪,有背景或者合作方的芯片厂在设计芯片时会充分考虑汽车ECU从开发到量产再到售后所有环节,并且都有不同的硬件适配,只是我们应用人员在使用时没有发现而已。_mcu的overlay

怎么实现EDIUS中白平衡的快速调整-程序员宅基地

文章浏览阅读301次。  拍摄素材的白平衡错掉怎么用EDIUS很 快校正呢?这也许是很多剪辑师苦恼的问题。摄像新手刚开始拍摄时,往往对专业摄像机的滤镜在不同光线环境中所打的档次不同而导致画面偏色,即使老手在光线 比较复杂的环境情况下,有时也把握不好在不同位置的摄像“白平衡”校正,特别是时时来不及校正又没有使用“自动..._eduis自动白平衡

3.利用抽象类编写一个程序实现公交车卡售票管理。当输入为“老年卡”、“学生卡”和“普通卡”时显示不同的卡类,及购票金额(“老年卡”购票金额=原价*50%、“学生卡”购票金额=原价*60%、“普通卡”购...-程序员宅基地

文章浏览阅读382次。下面是一种可能的实现方式:创建一个抽象类 Card,包含以下成员函数:构造函数:用于初始化卡的信息充值函数:用于向卡内充值金额余额查询函数:用于查询卡内的余额刷卡消费函数:用于在刷卡时扣除相应的金额纯虚函数:用于完成刷卡种类显示和设置折扣率的操作创建三个派生类 OldCard、StudentCard 和 NormalCard,分别表示老年卡、学生卡和普通卡。这三个类都从 C..._公交卡售票管理系统

Ubuntu 编译GLIBC_ubuntu glibc编译-程序员宅基地

文章浏览阅读1.5k次。GLIBC版本过低或者重新编译1、下载GLIBC源下载地址2、解压tar -zxvf 文件名3、在解压后的目录中创建build文件夹4、进入build文件夹,执行命令:…/configure中途会提示安装gawk:apt install gawk,安装后再次执行…/configure..._ubuntu glibc编译

CoreTelephony框架的简单使用_definition of 'ctcarrier' must be imported from mo-程序员宅基地

文章浏览阅读1.5w次。本文简单地使用了CoreTelephony这个曾经的私有框架来输出手机的运营商信息和通话信息。_definition of 'ctcarrier' must be imported from module 'coretele

随便推点

让你的python程序开机自启动_python 程度开机启动-程序员宅基地

文章浏览阅读3.1w次。前段时间写的那个python桌面时钟的小程序, 今天突发奇想, 能不能让他开机自动启动呢 开始菜单启动项实现1 创建快捷方式2 直接将快捷方式复制/粘贴到开始菜单启动文件夹开始菜单--> 程序-->启动-->然后单击右键打开, 进入启动(startup)目录将快捷方式复制进去3 重新启动我们的时钟就开始运行 了_python 程度开机启动

31条指令单周期cpu设计(Verilog)-(二)总体设计_31条指令单周期cpu设计与实现-程序员宅基地

文章浏览阅读2.2w次,点赞25次,收藏187次。目录31条指令单周期cpu设计(Verilog)-(一)相关软件31条指令单周期cpu设计(Verilog)-(二)总体设计31条指令单周期cpu设计(Verilog)-(三)指令分析 (重要)31条指令单周期cpu设计(Verilog)-(四)数据输入输出关系表 (重要)31条指令单周期cpu设计(Verilog)-(五)整体..._31条指令单周期cpu设计与实现

Celery 之异步任务、定时任务、周期任务-程序员宅基地

文章浏览阅读114次。什么是Celery?Celery 是芹菜Celery 是基于Python实现的模块, 用于执行异步定时周期任务的其结构的组成是由 1.用户任务 app 2.管道 broker 用于存储任务 官方推荐 redis rabbitMQ / backend 用于存储任务执行结果的 3.员工 worker一 异步任务 1 from celery import Cel..._celery 异步任务 定时任务 周期任务

Jmeter 控制台-启动报错:Could not initialize class org.apache.jmeter.gui.util.MenuFactory-程序员宅基地

文章浏览阅读3k次。1.下载:plugins-manager.jar包2.地址:https://jmeter-plugins.org/install/Install/3.将jar包放到lib/ext4.重启jmeter_could not initialize class org.apache.jmeter.gui.util.menufactory

SQL注入---大小写绕过_大小写注入-程序员宅基地

文章浏览阅读705次。WEB安全篇 SQL注入绕过技术 02 大小写转换 NULL值 N值 双引号 十六进制绕过注入1、大小写转换select * from users where id=1 Union sEleCT 1,2,3,4;在less中测试内容被过滤空格被过滤掉用%0a替换空格,空格未被过滤爆出账号密码http://192.168.50.185:7766/Less-27/?id=9999%27%0AUniOn%0ASelecT%0A1,(SelecT%0Agroup__大小写注入

Autoleaders控制组——51单片机学习笔记(2)-程序员宅基地

文章浏览阅读1.6k次,点赞55次,收藏31次。LCD1602是一块两排的液晶显示屏,可以输出字母,数字或者一些符号,相比数码管,它可以显示的信息更多,但也使它更加难以解释。这是一个原理简单,但驱动操作比较复杂的外设。这是关于驱动液晶显示屏的代码。//引脚配置://函数定义:/*** @brief LCD1602延时函数,可延时1ms* @param 无* @retval 无*/_nop_();_nop_();_nop_();i = 11;j = 190;do/*** @brief LCD1602写命令。

推荐文章

热门文章

相关标签