V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Cowhitewhite
V2EX  ›  Java

各位 V 友,求个解决连续范围的问题。

  •  
  •   Cowhitewhite · 2020-08-20 17:22:08 +08:00 · 1255 次点击
    这是一个创建于 1583 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如有这样一段连续的数据:
    [0-10],[10-20],[20-40],[40-50],[50-80],[80-100]

    每次修改需要保持这一段数据的连续性。
    如:[40-50]->[30-60]变成如下:
    [0-10],[10-20],[20-30],[30-60],[60-80],[80-100]

    [40,50]->[40.200]变化如下:
    [0-10],[10-20],[20-40],[40-200]

    [40-50]->[0,40]变化如下:
    [0-40],[40-50],[50-80],[80-100]

    以此类推。现在功能是实现了,但是各种配合 if else,感觉自己过两天就看不懂了。大概思路:找到当前需修改的点落在具体哪个范围,去修改这个范围的上下限值,多余的就删除。有没有啥更简单的方法啊,求个大佬解析解析。。

    3 条回复    2020-08-21 11:12:36 +08:00
    opengps
        1
    opengps  
       2020-08-20 17:26:09 +08:00
    我前阵子刚做了一个时段选择问题跟你相似,你参考下:
    1,按照每组数的第一个数,把集合排序
    2,遍历,按顺序检查,是否存在重叠,是否存在遗漏
    3,检查通过,直接覆盖掉原有设置(删除+新增,而不是修改)
    linvon
        2
    linvon  
       2020-08-20 17:38:24 +08:00
    你这不就是相当于每次用一个新区间去覆盖旧区间列表吗,而且区间本来就保证有序了还省了一步操作。直接找区间起始终止点做更新就好了,量大就二分,也没啥复杂的
    yyid
        3
    yyid  
       2020-08-21 11:12:36 +08:00
    树状数组
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1042 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:19 · PVG 03:19 · LAX 11:19 · JFK 14:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.