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

2020-08-20 17:22:08 +08:00
 Cowhitewhite

比如有这样一段连续的数据:
[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,感觉自己过两天就看不懂了。大概思路:找到当前需修改的点落在具体哪个范围,去修改这个范围的上下限值,多余的就删除。有没有啥更简单的方法啊,求个大佬解析解析。。

1143 次点击
所在节点    Java
3 条回复
opengps
2020-08-20 17:26:09 +08:00
我前阵子刚做了一个时段选择问题跟你相似,你参考下:
1,按照每组数的第一个数,把集合排序
2,遍历,按顺序检查,是否存在重叠,是否存在遗漏
3,检查通过,直接覆盖掉原有设置(删除+新增,而不是修改)
linvon
2020-08-20 17:38:24 +08:00
你这不就是相当于每次用一个新区间去覆盖旧区间列表吗,而且区间本来就保证有序了还省了一步操作。直接找区间起始终止点做更新就好了,量大就二分,也没啥复杂的
yyid
2020-08-21 11:12:36 +08:00
树状数组

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/700008

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX