V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Cowhitewhite
V2EX  ›  Java

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

  •  
  •   Cowhitewhite · Aug 20, 2020 · 1732 views
    This topic created in 2087 days ago, the information mentioned may be changed or developed.

    比如有这样一段连续的数据:
    [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 replies    2020-08-21 11:12:36 +08:00
    opengps
        1
    opengps  
       Aug 20, 2020
    我前阵子刚做了一个时段选择问题跟你相似,你参考下:
    1,按照每组数的第一个数,把集合排序
    2,遍历,按顺序检查,是否存在重叠,是否存在遗漏
    3,检查通过,直接覆盖掉原有设置(删除+新增,而不是修改)
    linvon
        2
    linvon  
       Aug 20, 2020
    你这不就是相当于每次用一个新区间去覆盖旧区间列表吗,而且区间本来就保证有序了还省了一步操作。直接找区间起始终止点做更新就好了,量大就二分,也没啥复杂的
    yyid
        3
    yyid  
       Aug 21, 2020
    树状数组
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   980 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 19:40 · PVG 03:40 · LAX 12:40 · JFK 15:40
    ♥ Do have faith in what you're doing.